मुझे निम्न समस्या है:
मैं टॉमकैट (लिनक्स) में एक वेब एप्लिकेशन तैनात करता हूं और टॉमकैट को बंद करने के बाद, यदि मैं ps -ef
करता हूं तो भी मैं java
प्रक्रिया चल रहा हूं।
मेरा मानना है कि यह कुछ फांसी धागे के कारण होता है लेकिन मुझे नहीं पता कि मैं इस धागे को कैसे ट्रैक कर सकता हूं।
मैं इस मुद्दे को कैसे डीबग कर सकता हूं?मैं एक लटकते जावा थ्रेड को कैसे डिबग कर सकता हूं?
उत्तर
आप नीचे वर्णित अनुसार 4-5 थ्रेड डंप उत्पन्न कर सकते हैं और फिर उन्हें Samurai जैसे टूल का उपयोग करके विश्लेषण कर सकते हैं।
आप जो जांचना चाहते हैं वह है कि जब कोई फंसे धागा या लंबे समय तक चलने वाला लेनदेन होता है, तो सभी थ्रेड डंप आपके जावा स्टैक ट्रेस में एक ही पंक्ति पर एक निश्चित थ्रेड आईडी दिखाएंगे। सरल शब्दों में, लेनदेन कई थ्रेड डंप में फैल रहा है और इसलिए अधिक जांच की आवश्यकता है।
अब जब आप इन्हें Samurai के माध्यम से चलाते हैं, तो यह लाल रंग में इन्हें हाइलाइट करेगा ताकि आप जल्दी से उस पर क्लिक कर सकें और समस्याओं को दिखाते हुए लाइनों पर जा सकें।
इस here का एक उदाहरण देखें। उस लिंक में समुराई आउटपुट छवि को देखें। हरी कोशिकाएं ठीक हैं। लाल और ग्रे कोशिकाओं को देखने की जरूरत है। JVM एक कंसोल में चल रहा है तो बस Ctrl-\
प्रेस
(लिनक्स)
:
एक धागा डंप जनरेट कर रहा है। JVM पृष्ठभूमि में चल रहा है तो यह QUIT संकेत भेजने:
kill -QUIT process_id
वहाँ PROCESS_ID चल जावा प्रक्रिया की प्रक्रिया संख्या है। जहां भी मानक आउट रीडायरेक्ट किया जाता है वहां थ्रेड डंप भेजा जाएगा। आप आम तौर पर आदेश के साथ चल रहे सभी जावा प्रक्रियाओं की की प्रक्रिया नंबर प्राप्त कर सकते हैं: सही
ps axf | grep java
आप कहते हैं कि अपने जावा प्रक्रिया अभी भी मौजूद है,? प्रक्रिया तब तक मौजूद है जब तक वे धागे संलग्न करते हैं, है ना? यदि हां, तो मैं निम्नलिखित दृष्टिकोण के लिए जाना होगा: - MBean सर्वर संलग्न के साथ प्रक्रिया चलाने के लिए और JVM
द्वारा आंतरिक रूप से प्रबंधित तब प्रक्रिया से कनेक्ट आप संकेत छोड़ दी और धागा डंप मिल भेजने के बाद (वहाँ
कि के लिए एक JMX होना चाहिए। जो धागे आप के लिए संदिग्ध लग रही मिलते हैं। मुझे लगता है कि आप भी JVisualVM उपयोग कर सकते हैं धागा उदासीनता लेने के लिए ...
मुझे नहीं पता कि आपके द्वारा सुझाए गए दृष्टिकोणों को कैसे करें – Jim
यह और भी आसान लग रहा था, लेकिन यह था पहले से ही aviad द्वारा सुझाया गया :): http://www.crazysquirrel.com/computing/java/basics/java-thread-dump.jspx –
JVisualVM दृष्टिकोण के लिए - यहां एक ट्यूटोरियल है http://docs.oracle.com /javase/6/docs/technotes/guides/visualvm/threads.html। असल में jvisualvm केवल एक निष्पादन योग्य फ़ाइल है जो $ JAVA_HOME/bin फ़ोल्डर में पाई जा सकती है ... इसे चलाएं, अपने एप्लिकेशन से कनेक्ट करें और देखें कि आप इसके साथ क्या कर सकते हैं। काफी शक्तिशाली सामान, वास्तव में :) –
- 1. मैं हाडोप मानचित्र को कैसे डिबग कर सकता हूं
- 2. मैं एक पर्ल स्क्रिप्ट कैसे डिबग कर सकता हूं?
- 3. मैं mod_rewrite नियमों को कैसे डिबग कर सकता हूं?
- 4. एडीएफएस 2.0 - मैं कैसे डिबग कर सकता हूं "401 - अनधिकृत"
- 5. मैं नोड मॉड्यूल कैसे डिबग कर सकता हूं?
- 6. मैं डब्ल्यूपीएफ में एक लटकते केबल का अनुकरण कैसे कर सकता हूं?
- 7. मैं अजगर में नियमित अभिव्यक्ति कैसे डिबग कर सकता हूं?
- 8. मैं डिमन थ्रेड कैसे बना सकता हूं?
- 9. जब मैं अपना कोड चलाता हूं तो JVM में होने वाले सेगफाल्ट को कैसे डिबग कर सकता हूं?
- 10. मैं कंप्यूट एमुलेटर में एक साथ कई Azure भूमिकाओं को कैसे डिबग कर सकता हूं?
- 11. विजुअल स्टूडियो में किसी अन्य समाधान से मैं एक परियोजना को कैसे डिबग कर सकता हूं?
- 12. मैं एक .net वेब ऐप से ऑरैकल संग्रहीत प्रक्रिया को कैसे डिबग कर सकता हूं?
- 13. मैं जावा में एक छवि वॉटरमार्क कैसे कर सकता हूं?
- 14. मैं थ्रेड पूल कैसे बना सकता हूं?
- 15. मैं जावा कचरा कलेक्टर को कैसे अक्षम कर सकता हूं?
- 16. मैं थ्रेड स्टैक गहराई को कैसे माप सकता हूं?
- 17. मैं बैकग्राउंड वर्कर थ्रेड को सिंगल थ्रेड अपार्टमेंट पर कैसे सेट कर सकता हूं?
- 18. मैं अपने आरसीपी एप्लिकेशन को रिमोट कैसे डिबग कर सकता हूं?
- 19. जावा एक्जिक्यूटर्स: मैं कार्य प्राथमिकता कैसे सेट कर सकता हूं?
- 20. मैं "थ्रेड के अलावा किसी थ्रेड से एक्सेस" त्रुटि को कैसे ठीक कर सकता हूं?
- 21. मैं xdebug के साथ एक PHP सीएलआई स्क्रिप्ट कैसे डिबग कर सकता हूं?
- 22. मैं एक अप्रबंधित बीसीएल (InternalCall) विधि में कैसे डिबग कर सकता हूं?
- 23. मैं एक गैर-कार्यशील PyInstaller निर्माण कैसे डिबग कर सकता हूं?
- 24. मैं PHP सीएलआई में सेगमेंटेशन दोषों को कैसे डिबग कर सकता हूं?
- 25. मैं पृष्ठभूमि थ्रेड पर AVAudioPlayer को कैसे निकाल सकता हूं?
- 26. मैं किसी भिन्न उपयोगकर्ता द्वारा चलाए जाने वाले प्रोग्राम को कैसे डिबग कर सकता हूं?
- 27. मैं अपनी जावास्क्रिप्ट को कैसे डिबग कर सकता हूं जिसे चुट्जपा/फैंटॉमजेएस
- 28. मैं emacs के धीमे स्टार्टअप समय को कैसे डिबग कर सकता हूं?
- 29. मैं पायथन के बेसएचटीटीपीएस सर्वर/SimpleHTTPServer के साथ POST अनुरोधों को कैसे डिबग कर सकता हूं?
- 30. मैं एक अलग थ्रेड पर सेवा कैसे चला सकता हूं?
इसकी नहीं है कि जिम के लिए पूछ रहा है, वह approch डीबगिंग के लिए पूछ रहा है –
@ user1348753, संपादित करें। – aviad
@aviad: मैंने 'मार -3' किया और समुराई को जावकोर लोड किया। कोई दृश्य तालिका नहीं थी सिर्फ एक लॉग रिपोर टी। मैं इस रिपोर्ट से धागे का पता कैसे लगा सकता हूं? – Jim