2010-10-21 13 views
11

हमारे पास दो टोमकैट सर्वर अपाचे के पीछे लोड-संतुलित हैं। कई बार अब हमें एक पृष्ठ पर 500 त्रुटि की रिपोर्ट मिल गई है। है, लेकिन केवल tomcats में से एक पर पता चलता है जांच की जा रही निम्न त्रुटि:कुछ जेएसपी पृष्ठों के लिए इंटरमीटेंट टॉमकैट क्लास नॉटफाउंड अपवाद

java.lang.ClassNotFoundException: org.apache.jsp.jsps.userLogin_jsp 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    etc... 

मैं काम निर्देशिका साफ करने और संपादन jsp पेज की कोशिश की है, कोई भाग्य के साथ। एकमात्र चीज जो इसे हल करती है वह टॉमकैट पुनरारंभ होता है, लेकिन जाहिर है कि हमें उत्पादन में इस तरह के समाधान से बचने की जरूरत है।

क्या किसी ने इस समस्या को हल किया है? मेरी खोज में केवल उत्तर के बिना प्रश्न पाए गए हैं, जिसमें 'मेरे लिए काम करता है' के रूप में हल किए गए टोमकैट बग सहित: https://issues.apache.org/bugzilla/show_bug.cgi?id=30450

मैं वास्तव में आपकी अंतर्दृष्टि की सराहना करता हूं।

  • अपाचे-बिल्ला-6.0.28
  • जावा 1.6
  • Maven
  • स्प्रिंग 2.5 (भारी JSTL साथ MVC के उपयोग)

: यहाँ परियोजना के बारे में कुछ अन्य जानकारी है धन्यवाद!

+0

यदि यह हमेशा एक ही टोमकैट होता है, तो यह तब भी विफल रहता है जब वह सर्वर क्लस्टर में होता है यानी दूसरा बंद हो जाता है। मुझे लगता है कि आप प्रोड पर इसका परीक्षण नहीं कर सकते हैं, क्या आपके पास दोहराने के लिए प्री-प्रोडक्शन इंस्टेंस है? क्या यह हमेशा एक ही उपयोगकर्ता Login.jsp या अन्य जेएसपी है? – JoseK

+1

यह थ्रेड भी देखता है, https://issues.apache.org/bugzilla/show_bug.cgi?id=48097 हालांकि यह इसे 6.0.21 में बना देता। क्या आप JspServlet विकास = सच – JoseK

+0

के साथ चल रहे हैं जानकारीपूर्ण लिंक के लिए धन्यवाद! दुर्भाग्य से यह ऐसा कुछ नहीं है जिसे मैं पुन: उत्पन्न करने में सक्षम हूं। मैं पहले इसके बारे में भूल गया था, लेकिन हमने कल एक नया युद्ध धक्का दिया, और मैं फिर से टोमकैट शुरू करने से पहले कार्य निर्देशिका को साफ़ करना भूल गया। मैं आगे बढ़ गया और टोमकैट शुरू होने के बाद ऐसा किया। क्या आपको लगता है कि इसका कारण हो सकता है? – samspot

उत्तर

1

जैसा कि उपर्युक्त टिप्पणियों में उल्लेख किया गया है, मुझे चलने के दौरान टोमकैट की कार्य निर्देशिका को साफ़ नहीं करना चाहिए। धन्यवाद दोस्तों!

1

मुझे एक और उदाहरण मिला है, जो इसी तरह की स्थितियों का कारण बन सकता है। मेरे पास टोमकैट में दो ऐप्स तैनात हैं, और जब मैं तीसरे को तैनात करता हूं, तो मैं इस व्यवहार का पालन करना शुरू कर रहा हूं।

इस विशेष मामले में मुझे पता चला है कि इन तीन ऐप्स के साथ टॉमकैट बहुत सारी फाइलें खोलता है, और इस उदाहरण में कभी-कभी 1600 फाइलें काम करने के लिए खोले जाते हैं (सिस्टम libs, jars, temps आदि)। जब यह कुछ अनुरोधों में सिस्टम डिफ़ॉल्ट 1024 अधिकतम खुली फ़ाइलों से अधिक हो जाता है, तो ऐसा लगता है कि कुछ फ़ाइलों को खोला नहीं जा सकता है और मेरे पास यादृच्छिक रूप से अजीब त्रुटियां हैं (अक्सर जेएसपी-एस में क्लास नॉटफाउंड अपवाद सहित)। यह सब इस बात पर निर्भर करता है कि मैं ब्राउज़र विंडो में इन ऐप्स में कितनी जल्दी क्लिक करता हूं, फाइलें खोली जाती हैं और बहुत जल्दी बंद हो जाती हैं।

यह मेरे लिए मदद की है और मैं अब इस उदाहरण के साथ समस्याओं देखें:

ulimit -n 2048 

इस सर्वर रनटाइम के दौरान निरीक्षण करने के लिए इस्तेमाल किया जा सकता है, क्या खोली गई फ़ाइलों की राशि (यदि बिल्ला रूप में चलाया जाता है "टोमकैट" उपयोगकर्ता):

while [ true ]; do lsof -u tomcat|wc -l; sleep 1s; done 
+0

हमें कुछ अन्य मुद्दों को हल करने के लिए अतीत में हमारे उलिमिट को बढ़ाना पड़ा था (लॉग में "बहुत खुली फाइलें")। मुझे लगता है कि अल्लिमिट सेटिंग ऐसा कुछ है जिसे हर किसी के बारे में पता होना चाहिए, लेकिन हम में से अधिकांश कठिन तरीके से पता लगाते हैं! – samspot

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