2011-04-07 17 views
16

संभव डुप्लिकेट:
Can I force generation of a JVM crash log file?बल या उत्पन्न JVM कोर डंप

मैं कैसे मजबूर या एक जावा अनुप्रयोग सर्वर पर या सामान्य रूप में एक JVM कोर डंप उत्पन्न कर सकते हैं?

+0

किस आवेदन सर्वर के लिए आप – developer

+6

की तलाश कर रहे हैं, इस प्रश्न को फिर से दोबारा शुरू किया जाना चाहिए और कोरफ डंप उत्पन्न करने के लिए आईबीएम जेवीएम को कैसे बल देना है, नीचे दामोदर द्वारा जवाब बहुत अच्छा है। – ams

+2

डुप्लिकेट नहीं (मुझे लगता है), कोर डंप एक क्रैश लॉग नहीं है (मुझे लगता है)! – PJTraill

उत्तर

19

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

यह तकनीक बताती है कि वेबस्पेयर एप्लिकेशन सर्वर सामुदायिक संस्करण एक ऑपरेटिंग सिस्टम सेवा के रूप में चल रहा है जब आवश्यक डंप उत्पन्न करने के लिए कैसे। इस technote आईबीएम जावा एसडीके 1.5.0 और आईबीएम जावा एसडीके पर लागू होता है 1.6.0

कारण: ग्राहक अनुप्रयोगों अनुभव लटका या आईबीएम जावा एसडीके 1.5.0 या आईबीएम जावा एसडीके पर WebSphere अनुप्रयोग सर्वर समुदाय संस्करण के साथ खराब प्रदर्शन जब 1.6.0, और सर्वर एक ऑपरेटिंग सिस्टम सेवा के रूप में चल रहा है, सर्वर प्रक्रिया की संबंधित कमांड/खोल विंडो उपयोगकर्ताओं के लिए उपलब्ध नहीं है। नतीजतन, डंप ट्रिगर करने के लिए कीबोर्ड सिग्नल को कीबोर्ड से नहीं भेजा जा सकता है।

समस्या का समाधान करना:

विंडोज: जब JVM प्रक्रिया कमांड विंडो उपलब्ध है, डंप पैदा सीधे आगे इस प्रकार है JVM सेटिंग उपयोगकर्ता संकेत पर डंप को गति प्रदान करने के लिए कॉन्फ़िगर किया गया है, डंप उत्पन्न करने के लिए कमांड विंडो पर CRTL+Break दबाएं।

लिनक्स: यदि उपयोगकर्ता सिग्नल पर डंप उत्पन्न करने के लिए JVM सेटिंग कॉन्फ़िगर किया गया है, तो खोल विंडो पर CTRL+\ दबाएं।

AIX: यदि उपयोगकर्ता सिग्नल पर डंप उत्पन्न करने के लिए JVM सेटिंग कॉन्फ़िगर किया गया है, तो खोल विंडो पर CTRL+\ दबाएं।

नोट:

-Xdump:java+heap+system+snap:events=user 

अधिक जानकारी के लिए: आदेश जावा कोर डंप, प्रणाली कोर डंप, हीप डंप और उपयोगकर्ता संकेत पर एक तस्वीर डंप उत्पन्न करने के लिए, डंप एजेंट के रूप में निम्नानुसार JVM विकल्पों के माध्यम से कॉन्फ़िगर किया जाना चाहिए डंप एजेंटों को कॉन्फ़िगर करने के तरीके पर, -Xdump का उपयोग करके देखें।

हालांकि, यदि वेबस्पेयर एप्लिकेशन सर्वर सामुदायिक संस्करण ऑपरेटिंग सिस्टम सेवा के रूप में चल रहा है, तो कमांड विंडो उपलब्ध नहीं हो सकती है। यह मामला तब भी उठता है जब विंडोज़ पर javaw.exe के साथ JVM प्रक्रिया शुरू होती है।

पिछली परिस्थितियों में, उपयोगकर्ता को JVM प्रक्रिया की इसी प्रक्रिया-आईडी को ढूंढना होगा और निम्न चरणों का पालन करके डंप उत्पन्न करने के लिए ऑपरेटिंग सिस्टम विक्रेता या आईबीएम आपूर्ति किए गए टूल का उपयोग करना होगा।

विंडोज़: WinDbg को सिस्टम कोर डंप उत्पन्न करने के लिए Microsoft Dev टूल साइट से डाउनलोड किया जा सकता है।प्रणाली कोर डंप उत्पन्न करने के लिए WinDbg कंसोल पर निम्न आदेश का उपयोग:

dump /f <dumpfile> 

कहाँ डंपफाइल निर्देशिका पथ और प्रणाली कोर डंप फ़ाइल का नाम भी शामिल है। सुनिश्चित करें कि विकल्प /ma के बजाय उपयोग किया जाता है। /f पूर्ण डंप उत्पन्न करता है जहां /ma मिनी डंप उत्पन्न करता है। आईबीएम जावा एसडीके 1.5.0/1.6.0 के साथ आपूर्ति किए गए jextract उपकरण के साथ केवल पूर्ण डंप समर्थित हैं।

विंडोज के लिए SendSignal उपयोगिता। इसके लिए, उपयोगकर्ता संकेतों पर डंप उत्पन्न करने के लिए JVM सेटअप होना चाहिए। जावा कोर डंप, हीप डंप, प्रणाली कोर डंप और उपयोगकर्ता संकेत पर एक तस्वीर डंप उत्पन्न करने के लिए निम्न विकल्प स्टार्टअप पर JVM को आपूर्ति किया जाना चाहिए:

-Xdump:java+heap+system+snap:events=user 

नोट: SendSignal उपयोगिता सभी उत्पन्न करने के लिए इस्तेमाल किया जा सकता डंप के प्रकार जहां WinDbg केवल सिस्टम कोर डंप उत्पन्न करता है।

Linux and AIX: लिनक्स और एईक्स के लिए संकेत SIGQUIT है। विभिन्न डंप को गति प्रदान करने उपयोगकर्ता संकेत भेजने के लिए आदेश का उपयोग करें:

kill -3 <PID> 

इस के लिए, JVM उपयोगकर्ता संकेत पर डंप उत्पन्न करने के लिए सेटअप किया जाना चाहिए। जावा कोर डंप, हीप डंप, सिस्टम कोर डंप और उपयोगकर्ता सिग्नल पर एक स्नैप सिंप उत्पन्न करने के लिए, निम्न विकल्प स्टार्टअप पर JVM को प्रदान किया जाना चाहिए।

-Xdump:java+heap+system+snap:events=user 

नोट: सिस्टम कोर डंप फ़ाइलों को jextract टूल का उपयोग करके संसाधित करना होगा और आउटपुट को आईबीएम समर्थन को भेजना होगा।

<JAVA_HOME>/jre/bin/jextract <dumpfile> 

कहाँ डंपफाइल प्रणाली कोर डंप के फ़ाइल नाम है: एक ही JVM कि समस्या का अनुभव से jextract प्रणाली कोर डंप पर कार्रवाई करने के लिए करना चाहिए।

यह एक ज़िप फ़ाइल उत्पन्न करेगा। ज़िप। ज़िप फ़ाइल को आईबीएम समर्थन में भेजने की जरूरत है।

+0

हत्या -3 मेरे लिए सेंटोस 6 और जेडीके 8 पर काम नहीं किया। मुझे इस पोस्ट से जीडीबी विधि का उपयोग करना पड़ा: http://stackoverflow.com/questions/20832793/java-get-heap-dump-without- jmap या बिना-मटरगश्ती आवेदन – wbdarby

-2

यदि आप अपना कोड चला रहे हैं तो Q & डी तरीका अपवाद बढ़ाने और तुरंत अपने स्टैकट्रैस को मुद्रित करना है। यदि नहीं, तो प्रोफाइलिंग टूल में आपके JVM में चल रहे थ्रेड के स्नैपशॉट्स कैप्चर करने के तरीके हो सकते हैं। मैंने YourKit का उपयोग किया है और इसे पसंद किया है, लेकिन free alternatives हैं।

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