2012-07-05 7 views
5

मेरी स्थिति इस तरह है:shutdown.sh को कॉल करने के बाद टोमकैट शट डाउन बहुत धीमा?

वेब-ऐप फ़ोल्डर में युद्ध फ़ाइल अपलोड करने से पहले हर बार, मैं sh shutdown.sh पर कॉल करके टॉमकैट को रोकता हूं। कुल शट डाउन के लिए इसमें लगभग 30 सेकंड लगते थे। लेकिन अब यह अब अच्छा काम नहीं करता है।

दरअसल, यह कुछ काम करता था, क्योंकि जब मैं वेब पेज से एप्लिकेशन तक पहुंचता हूं तो यह 503 त्रुटि (रखरखाव के तहत) फेंकता है। लेकिन जब मैं चेक करने के लिए ps aux | grep tomcat का उपयोग करता हूं, तो टॉमकैट प्रक्रिया अभी भी वहां है। और यह लगभग 5-10 मिनट के लिए होगा।

मैं समझता हूं कि सभी कार्यों को पूरा करने के लिए इसे अतिरिक्त समय लेना पड़ सकता है, लेकिन यह पूरी तरह से बंद होने से पहले बहुत धीमा (5-10 मिनट) है। मुझे समझ में नहीं आता कि ऐसा क्यों होता है, लेकिन कुछ कारण होना चाहिए। हो सकता है कि कोड के साथ कुछ करने के लिए, या हाल ही में उपयोग की जाने वाली तैनाती की नई स्क्रिप्ट है। मुझे बस जांचने के बारे में कोई सुराग नहीं है।

यह हमारी टीम के लिए महत्वपूर्ण है क्योंकि हम "ऑटो-परिनियोजन" का उपयोग कर रहे हैं, जिसमें हम युद्ध फ़ाइल को ऑटो-पैकेज करने, एक विशिष्ट समय पर अपलोड और तैनाती के लिए एक स्क्रिप्ट का उपयोग करते हैं। यदि हमने पुराने व्यक्ति को सफलतापूर्वक बंद करने से पहले एक नया टॉमकैट उदाहरण शुरू किया है, तो यह अनंत काल तक वहां लटका होगा, और "हत्या -9" द्वारा कार्य को साफ करना मुश्किल है।

क्या कोई ऐसा व्यक्ति है जिसने इस मुद्दे का प्रयोग किया है? किसी भी सुराग की सराहना की जाएगी।

+1

क्यू देखें: तो क्या हुआ, जब यह इस 5-10 मिनट ले रहा है लॉग में आखिरी बात है? यह भी: क्या "ps -eaf" आपको कोई संकेत देता है (या आप शून्य CPU उपयोग के साथ जावा प्रक्रिया को देखते हैं)? आपका टोमकैट संस्करण क्या है? आपका ओएस? यह भी: यदि आप "पीए" में "जावा" प्रक्रिया "फांसी" की पहचान करते हैं, तो आपको एक स्टैक ट्रेस प्राप्त करना चाहिए: http://wiki.apache.org/tomcat/HowTo#How_do_I_obtain_a_thread_dump_of_my_running_webapp_.3F – paulsm4

+0

@ paulsm4: लॉग को देख रहे हैं , मुझे लगता है कि shutdown.sh को कॉल करने के बाद भी, मेरी क्वार्ट्ज नौकरियां अभी भी चलती हैं। थोड़ी देर के बाद एक त्रुटि फेंक दी गई: सेवर: वेब एप्लिकेशन [/ प्रोजेक्ट] ने एक थ्रेड शुरू किया है [BasicResourcePool.close() में संसाधन डिस्ट्रॉयर] लेकिन इसे रोकने में विफल रहा है। इस बात की संभावना है कि इससे स्मृति रिसाव पैदा होगा। –

+0

@ paulsm4: वैसे, मेरे पास क्वार्ट्ज नौकरी एक समय में लगभग 10 सेकंड चलती है। क्या यह एक मुद्दा हो सकता है? –

उत्तर

2

होआंग लांग -

अद्यतन के लिए धन्यवाद।

1) तथ्य यह है कि आप देख चल अपने क्वार्ट्ज रोजगार, और त्रुटि संदेश, दोनों महत्वपूर्ण हैं:

गंभीर: वेब एप्लिकेशन [/ परियोजना] एक धागा नाम [संसाधन शुरू कर दिया है प्रकट होता है BasicResourcePool.close()] में विनाशक लेकिन इसे रोकने में विफल रहा है। इस बात की संभावना है कि इससे स्मृति रिसाव पैदा होगा।

http://forum.springsource.org/showthread.php?17833-Spring-Quartz-Tomcat-no-shutdown

मैं एक ही समस्या थी:

2) एक सुझाव यह विन्यास है। मैंने destroy-method="destroy" को शेड्यूलर फैक्ट्रीबीन परिभाषा में जोड़कर इसे ठीक किया। इस प्रकार वसंत शेड्यूलर को बंद कर देता है जब एप्लिकेशन बंद हो जाता है। मुद्दे को हल करती है मेरे लिए

http://forums.terracotta.org/forums/posts/list/15/4341.page

एक संदर्भ श्रोता का उपयोग करते हुए और शट डाउन पर एक टाइमआउट शुरू:

3) एक और सुझाव बंद श्रोता जोड़ना है। यह कुछ ऐसा है mystically पिछले कुछ दिनों के भीतर हो शुरू कर दिया है, तो

public void contextDestroyed(ServletContextEvent sce) { 
    try { 
     factory.getScheduler().shutdown(); 
     Thread.sleep(1000); 
+0

मुझे लगता है कि मैंने पता लगाया है: मुख्य कारण यह है कि मेरे पास अभी भी लेनदेन क्वार्ट्ज नौकरियां चल रही हैं। आपके उत्तर की तीसरी विधि के बारे में, क्या आपका मतलब है कि मुझे इस कार्य के लिए स्प्रिंग "ContextLoaderListener" को ओवरराइड करना होगा? –

2

, शायद आप लिनक्स छलांग दूसरा बग में चला रहे हैं: मैं बस नीचे बंद के बाद एक दूसरा इंतजार?अधिक जानकारी के लिए

https://serverfault.com/questions/403732/anyone-else-experiencing-high-rates-of-linux-server-crashes-during-a-leap-second

https://access.redhat.com/knowledge/articles/15145

http://pedroalves-bi.blogspot.fi/2012/07/java-leap-second-bug-how-to-fix-your.html

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