2015-03-26 8 views
7

के दौरान HTTP अनुरोधों को आयोजित किया गया है मुझे टॉमकैट शटडाउन के साथ कोई समस्या है। सर्लेट कंटेनर बंद होने पर अनुरोध बंद हो रहा है जब तक कि कंटेनर शटडाउन खत्म होने तक कनेक्टर द्वारा आयोजित किया जा रहा है।टोमकैट शटडाउन

समस्या यह है कि, हमारे सर्वलेट को बंद करने में एक मिनट तक लग सकते हैं, जिसका अर्थ है इस अवधि के दौरान आने वाले कनेक्शन एक मिनट तक आयोजित किए जाते हैं।

क्या यह व्यवहार सही/अपेक्षित है?

आदर्श बिलाव बंद व्यवहार

  1. को होगा नहीं मौजूदा अनुरोध करते हैं खत्म (यह पहले से ही करता है), लेकिन
  2. नए कनेक्शन (बजाय को स्वीकार करने और उन्हें पकड़े) अस्वीकार?
+0

क्या आपने [यह] देखा है (http://stackoverflow.com/questions/18444384/how-to-process-servlet-requests-during-long-shutdown)? – user2138356

+0

कृपया इस उत्तर का संदर्भ लें http://stackoverflow.com/a/9186070/957654 –

+0

यह देखने के लिए मुश्किल है कि यह और क्या कर सकता है। अगर इसे बंद करना है तो इसे कुछ समय के लिए प्रसंस्करण अनुरोधों को रोकना होगा। आपके सर्वलेट को रोकने के लिए एक मिनट क्यों लगता है? – EJP

उत्तर

1

यह शायद ही वांछनीय व्यवहार है। इसे बंद करते समय इसे नए कनेक्शन स्वीकार करना बंद कर देना चाहिए, लेकिन मुझे लगता है कि इसे लागू करने में कुछ तकनीकी चुनौतियां थीं। म्यूट, वैसे भी जैसा कि उल्लेख किया गया है।

हम यह अतीत कैसे मिला यह है:

  1. हम अपने tomcats के सामने वेब सर्वर की है। इसे जगह में प्राप्त करें, यदि आप नहीं करते हैं, तो लंबी अवधि के लिए योजना बनाएं, मेरी सलाह है।
  2. वेब सर्वर को राउंड रॉबिन उदाहरणों की सूची से नोड (टोमकैट इंस्टेंस) ड्रॉप करने का तरीका बताता है।
  3. 3-4 मिनट के बाद कि टॉमकैट नोड मुक्त होना चाहिए (कोई नया कनेक्शन और पुराना पूरा नहीं होना चाहिए)। हमारे पास http://www.quickserver.org/ पर आधारित एक कस्टम वेब सर्वर है और यह बैक-एंड टॉमकैट को प्रक्रिया कनेक्शन में पूरा करने देता है, हालांकि इसे नए प्रदान करना बंद कर देता है।
  4. रखरखाव होने पर, हमारे पास एजेंट पर एक और सेवा है जो टॉमकैट को सक्रिय सर्वर की वेब सर्वर सूची में वापस जोड़ने के लिए है।

हमारे मामले में हमारे पास सर्वर को उनकी कॉन्फ़िगरेशन को पुनः लोड करने का तरीका बताया गया था। अन्य सर्वरों में https://serverfault.com/questions/108261/how-to-make-modification-take-affect-without-restart-nginx

2

यह सही व्यवहार है। क्लाइंट अनुरोध भेज रहा होगा जब तक कि यह सर्वर को दिए गए बंदरगाह पर न हो।

सर्वर तब तक अनुरोध स्वीकार करेगा जब तक यह ऊपर हो। तो शट डाउन प्रक्रिया के दौरान प्राप्त किए गए कुछ अनुरोध प्राप्त किए जाएंगे, लेकिन पूरी तरह संसाधित नहीं होंगे।

यदि आप इन अनुरोधों को गहन तरीके से संभालना चाहते हैं, तो आपको अपनी खुद की तंत्र को लागू करने की आवश्यकता होगी। आप या तो जेएमएस कतार या फिल्टर का उपयोग कर सकते हैं। फ़िल्टर प्राप्त करने का पहला अनुरोध पहले स्टोर (डीबी/क्रमबद्ध) अनुरोध करेगा और फिर इसे संसाधित करेगा। बाद में जब सर्वर पुनरारंभ होता है, तो आप उन अनुरोधों की जांच कर सकते हैं जिन्हें संसाधित नहीं किया गया था, आप या तो उन्हें संसाधित कर सकते हैं या क्लाइंट को सूचित कर सकते हैं कि यह असफल रहा।

5

जाहिर है, आप इस व्यवहार पर ध्यान देने/टिप्पणी करने वाले एकमात्र व्यक्ति नहीं हैं; यह "tomcat-user" पोस्टिंग देखें:

(वास्तव में, कि पोस्टिंग और अपने प्रश्न के बीच समानता का सुझाव अपने आप को और एंड्री Eng ... के बीच कुछ संबंध नहीं है कि) कुछ अर्थों में

तो स्पष्ट रूप से, इस "उम्मीद" है व्यवहार।

चाहे यह "सही" है, राय का विषय है। और यह मूक है अगर टॉमकैट डेवलपर्स आपकी राय से सहमत नहीं हैं।

और, इसके लिए क्या है, "आदर्श" व्यवहार के बारे में यहां अशिष्ट प्रश्न पोस्ट करना भी मज़बूत है। जाहिर है, टॉमकैट डेवलपर्स या तो स्टैक ओवरफ्लो/"टॉमकैट-यूजर" में नहीं हैं ... या वे इस मुद्दे पर बहस करने को तैयार नहीं हैं।


तो आपके पास क्या संभावित समाधान हैं? How to process servlet requests during long shutdown

  • आप बिलाव समस्या ट्रैकर पर एक मुद्दा खोल सके -

    • यह जुड़ा हुआ क्यू & एक एक समाधान बताते हैं। झगड़ा यह है कि आपका मुद्दा इसे संबोधित करने से पहले महीनों या वर्षों तक सूची में बैठ सकता है। या इसे "खारिज कर दिया जा सकता है"।

      हालांकि, ऐसा लगता है कि किसी ने इसे अतीत में किसी मुद्दे के रूप में सबमिट नहीं किया है।

    • आप यह पता लगा सकते हैं कि शटडाउन के दौरान नए अनुरोधों को अस्वीकार करने के लिए टोमकैट को कैसे संशोधित किया जाए। फिर पैच के रूप में अपने (परीक्षण) परिवर्तन जमा करें।

    • आप किसी के लिए काम करने के लिए किराए पर ले सकते हैं। उदाहरण के लिए, यहां सूचीबद्ध लोगों/संगठनों पर एक नज़र डालें: http://wiki.apache.org/tomcat/SupportAndTraining

  • संबंधित मुद्दे