प्राप्त करने के लिए 3 मार डालो मैं यूनिक्स में जेवीएम के थ्रेड डंप को देखने के लिए kill -3
कमांड का उपयोग कर रहा हूं। लेकिन मुझे इस kill
कमांड का आउटपुट कहां मिल सकता है? मै खो गया हूँ!!मारवा थ्रेड डंप
उत्तर
आप थ्रेड डंप लेने के लिए वैकल्पिक रूप से जेस्टैक (जेडीके के साथ शामिल) का उपयोग कर सकते हैं और जहां भी चाहें आउटपुट लिख सकते हैं। क्या यह यूनिक्स पर्यावरण में उपलब्ध नहीं है?
-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log
इसके लिए धन्यवाद। बिल्कुल !! हाँ मैं इसका उपयोग कर सकता हूँ। जेस्टैक पीआईडी> आउटफाइल उस विशेष अवधि के समय थ्रेड डंप आउटपुट करेगा। यही है ना – javanerd
हां - समय पर यह चल रहा है। आप एक लंबी सूची के लिए -l (लोअरकेस एल) भी निर्दिष्ट कर सकते हैं जो अतिरिक्त लॉक जानकारी –
प्रिंट करता है जब तक jstack कमांड "पते से धागे के प्रकार को कम करने में असमर्थ" के कारण लगातार विफल रहता है ;-( – noahlz
उसी स्थान पर जहां JVM का स्टडआउट रखा गया है। यदि आपके पास टॉमकैट सर्वर है, तो यह catalina_(date).out
फ़ाइल होगी।
थ्रेड डंप प्रणाली के लिए वीएम से बाहर लिखा गया है जिस पर आपने हत्या -3 को निष्पादित किया था। यदि आप किसी फ़ाइल में JVM के कंसोल आउटपुट को रीडायरेक्ट कर रहे हैं, तो उस फ़ाइल में थ्रेड डंप होगा। यदि JVM एक खुले कंसोल में चल रहा है, तो थ्रेड डंप को इसके कंसोल में प्रदर्शित किया जाएगा।
फ़ाइल को अलग करने के लिए JVM थ्रेड डंप आउटपुट को रीडायरेक्ट करने का एक तरीका है। मेरे जवाब में देखें। – Vadzim
LogVMOutput diagnostic option साथ अलग फाइल को तोड़ने के संकेत पर JVM धागा डंप उत्पादन रीडायरेक्ट करने के लिए एक तरीका होता है उपरोक्त आदेश में निर्दिष्ट फ़ाइल कंसोल पर आपका आउटपुट/थ्रेडम्प।
तकनीकी रूप से यह थ्रेड डंप आउटपुट को "रीडायरेक्ट" नहीं करता है। यह जेवीएम लॉगिंग चालू करता है jvm.log में (जिसमें थ्रेड डंप आउटपुट शामिल है) लेकिन मार -QUIT अभी भी प्रक्रिया के stdout (aswell) पर डंप होगा। अस्पष्ट JVM विकल्प के विवरण के लिए उपरोक्त :) – sqweek
Jboss में आप प्रदर्शन कर सकते हैं निम्नलिखित
nohup $JBOSS_HOME/bin/run.sh -c yourinstancename $JBOSS_OPTS >> console-$(date +%Y%m%d).out 2>&1 < /dev/null &
kill -3 <java_pid>
इस रीडायरेक्ट करेगा:
jstack PID > outfile
हत्या -3 का उपयोग करते समय मानक आउटपुट में थ्रेड डंप देखना चाहिए। अधिकांश एप्लिकेशन सर्वर मानक आउटपुट को एक अलग फ़ाइल में लिखते हैं। हत्या -3 का उपयोग करते समय आपको इसे वहां खोजना चाहिए। थ्रेड डंप प्राप्त करने के कई तरीके हैं:
- किल -3: मानक आउटपुट में आउटपुट देता है।
- यदि किसी के पास कंसोल विंडो तक पहुंच है जहां सर्वर चल रहा है, तो कोई स्टडी आउटपुट पर स्टैक ट्रेस उत्पन्न करने के लिए कुंजी के Ctrl + Break संयोजन का उपयोग कर सकता है।
- हॉटस्पॉट वीएम के लिए हम थ्रेड डंप उत्पन्न करने के लिए jstack कमांड का भी उपयोग कर सकते हैं। यह जेडीके का हिस्सा है। उपयोग:: jstack [-l] (चलने वाली प्रक्रिया से कनेक्ट करने) jstack एफ [मी] [-l] (एक त्रिशंकु प्रक्रिया से कनेक्ट करने)
- JRockit JVM के लिए हम उपयोग कर सकते हैं सिंटेक्स इस प्रकार है jRCMD आदेश जो JDK सिंटेक्स के साथ आता है: jrcmd [[]] [-l] [-f फ़ाइल] [-p] -h]
- प्रक्रिया आईडी [पी एस आईडी]
- jcmd निष्पादित खोजें [पीएस आईडी] थ्रेड.प्रिंट
तस्वीर 8 में जावा 8 के साथ, jcmd
पसंदीदा दृष्टिकोण है।
jcmd <PID> Thread.print
बाद Oracle documentation से स्निपेट है:
JDK 8 की रिहाई की शुरुआत की जावा मिशन नियंत्रण, जावा उड़ान रिकॉर्डर, और JVM और Java अनुप्रयोगों के साथ समस्याओं के निदान के लिए jcmd उपयोगिता। उन्नत डायग्नोस्टिक्स और कम प्रदर्शन ओवरहेड के लिए पिछले जेस्टैक उपयोगिता के बजाय नवीनतम उपयोगिता, जेसीएमडी का उपयोग करने का सुझाव दिया गया है।
हालांकि, आवेदन के साथ इसे शिपिंग करना लाइसेंसिंग प्रभाव हो सकता है जो मुझे यकीन नहीं है।
दुर्भाग्यवश 'jcmd'' com.sun.tools.attach.AttachNotSupportedException के साथ विंडोज सेवा प्रक्रिया से कनेक्ट करने में विफल रहता है: 'jstack -F' के दौरान अपर्याप्त स्मृति या अपर्याप्त विशेषाधिकार' सफल होता है: https://stackoverflow.com/questions/1197912/cant-debug-java-windows-services-with-jhat-jps-jstack/47723393#47723393 – Vadzim
कदम है कि आप का पालन करना चाहिए अगर आप अपने स्टैंडअलोन जावा प्रक्रिया की धागा डंप चाहते
चरण 1: जावा कार्यक्रम
linux$ ps -aef | grep "runABCD"
user1 **8535** 4369 0 Mar 25 ? 0:00 /bin/csh /home/user1/runABCD.sh
user1 17796 17372 0 08:15:41 pts/49 0:00 grep runABCD
चरण बुला खोल स्क्रिप्ट के लिए प्रक्रिया ID प्राप्त करें 2: रनएबीसीडी द्वारा आमंत्रित किए गए बच्चे के लिए प्रक्रिया आईडी प्राप्त करें। बच्चों को पाने के लिए उपरोक्त पीआईडी का प्रयोग करें।
linux$ ps -aef | grep **8535**
user1 **8536** 8535 0 Mar 25 ? 126:38 /apps/java/jdk/sun4/SunOS5/1.6.0_16/bin/java -cp /home/user1/XYZServer
user1 8535 4369 0 Mar 25 ? 0:00 /bin/csh /home/user1/runABCD.sh
user1 17977 17372 0 08:15:49 pts/49 0:00 grep 8535
चरण 3: विशेष प्रक्रिया के लिए JSTACK प्राप्त करें। अपनी XYSServer प्रक्रिया की प्रक्रिया आईडी प्राप्त करें। यानी 8536
linux$ jstack **8536** > threadDump.log
- 1. थ्रेड डंप .net 4
- 2. पायथन थ्रेड डंप
- 3. जेवीएम थ्रेड डंप स्थान
- 4. थ्रेड डंप विश्लेषण उपकरण/विधि
- 5. उत्पादन में थ्रेड डंप लेना
- 6. जावा थ्रेड डंप का विश्लेषण कैसे करें?
- 7. जावा (सोलर) थ्रेड डंप कितने महंगा हैं?
- 8. प्रत्येक थ्रेड के लिए डंप स्टैकट्रेस
- 9. "थ्रेड डंप" का अर्थ क्या है
- 10. क्या जावा हीप डंप में थ्रेड स्टैक्स
- 11. थ्रेड डंप प्रोग्रामेटिकली/जेडीआई (जावा डीबगर इंटरफेस)
- 12. एंड्रॉइड में जावा थ्रेड डंप कैसे बनाएं?
- 13. थ्रेड Runnable राज्य दिखा डंप है, लेकिन, काफी समय
- 14. जेवीएम थ्रेड डंप थ्रेड्स को लॉक किए बिना मॉनीटर युक्त
- 15. मैं मोनो के साथ थ्रेड डंप कैसे बना सकता हूं?
- 16. जावा थ्रेड डंप: "लॉक करने का इंतजार" के बिना ब्लॉक्ड थ्रेड ...
- 17. क्या हैप डंप
- 18. स्मृति डंप
- 19. कोर डंप
- 20. एक पोस्टग्रेएसक्यूएल डंप को एक MySQL डंप में बदलें
- 21. विंडोज मेमोरी डंप से एक जावा हीप डंप बनाएं
- 22. सोलारिस कोर डंप विश्लेषण
- 23. svn: डंप प्रारूप दस्तावेज?
- 24. एक विकिपीडिया डंप
- 25. क्वेरी द्वारा MySQL डंप
- 26. वेबसाइट स्रोत डंप
- 27. अंग्रेजी शब्दकोश एसक्यूएल डंप?
- 28. क्रैश डंप - WinDbg
- 29. जीएचसीआई पर्यावरण डंप
- 30. वीसीडी डंप। कैसे?
आप किस प्रक्रिया को मार रहे हैं? क्या यह एक जे 2 ईई ऐप सर्वर है? यदि ऐसा है तो आपको मानक आउट में स्टैक ट्रेस मिलना चाहिए। –
मैं एक ऐसी प्रक्रिया को मार रहा हूं जो जावा क्लास – javanerd
चलाता है, जो कंसोल पर थ्रेड डंप लिखना नहीं चाहिए। चूंकि जावा क्लास में कंसोल है – javanerd