2009-02-12 11 views
51

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

मैं निम्नलिखित झंडे के साथ एक सन जावा 1.4.2 JVM पर शुरू कर रहा हूँ:

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails 

लॉग उत्पादन इस तरह दिखता है:

54.736: [Full GC 54.737: [Tenured: 172798K->18092K(174784K), 2.3792658 secs] 257598K->18092K(259584K), [Perm : 20476K->20476K(20480K)], 2.4715398 secs] 

के कुछ सौ की भावना बनाना अगर मेरे पास ऐसा टूल था जो कचरा संग्रहण रुझानों को दृष्टि से ग्राफ करेगा तो इन प्रकार की लॉग प्रविष्टियां बहुत आसान होंगी।

+1

एक वाणिज्यिक उत्पाद जेक्लेरिटी सेंसरम है, जिसकी मैंने कोशिश नहीं की है। हालांकि, इसके लेखक द्वारा यह बात सामान्य रूप से जावा जीसी पर काफी जानकारीपूर्ण थी: http://www.infoq.com/presentations/Visualizing-Java-GC –

उत्तर

13

आईबीएम की जीसी टूलकिट ठीक वही करता है जो आप पूछते हैं।

https://www.ibm.com/developerworks/java/jdk/tools/gcmv/

मुझे यकीन है कि अगर यह यद्यपि सूर्य की JVM से जीसी लॉग के साथ संगत है नहीं कर रहा हूँ।

+0

यह एकदम सही नहीं है, लेकिन यह वही करता है जो मुझे करने की ज़रूरत है। ऐसा लगता है कि आईबीएम जेडीके की तरफ तैयार है, लेकिन यह ज्यादातर जावा जीसी लॉग प्रारूप के साथ काम करता है। जानकारी के कुछ बिट्स हैं जिन्हें पार्स नहीं किया जाता है, लेकिन अधिकांश डेटा वहां है। धन्यवाद! – braveterry

+0

आईबीएम अब जीसी लॉग विश्लेषण के लिए वास्तव में बड़े पैकेज "आईबीएम सपोर्ट सहायक" http://www-01.ibm.com/support/docview.wss?uid=swg27023689 में बंडल किए गए टूल का एक सूट प्रदान करता है, आपको इसका उपयोग करना होगा "कचरा संग्रह और मेमोरी विजुअलाइज़र (जीसीएमवी)" –

+0

आईबीएम जावा कचरा कलेक्टर (पीएमएटी) के लिए "आईबीएम पैटर्न मॉडलिंग और विश्लेषण उपकरण" प्रदान करता है (अंतिम अपडेट नवंबर 2012) https://www.ibm.com/developerworks/community/groups/service/html/communityview? communityUuid = 22d56091-3a7b-4497-b36e-634b51838e11 –

1

जेपीरोब फ्रीवेयर (ग्रहण प्लग-इन) जैसे कुछ प्रोफाइलिंग टूल को आजमाने के बारे में कैसे।

+1

आप अपने उत्पादन वातावरण को प्रोफ़ाइल नहीं दे सकते। प्रासंगिक परिदृश्यों के साथ एक परीक्षण वातावरण लोड करें जीसी/मेमोरी ट्यूनिंग के लिए पहला कदम है, लेकिन फिर आपको यह सत्यापित करना होगा कि ट्यूनिंग के उत्पादन में अपेक्षित प्रभाव है जीसी लॉग विश्लेषण –

2

jconsole आपको बहुत मदद कर सकता है, लेकिन मुझे लगता है कि यह जावा 5 और बाद में केवल है। एक बार मैंने अपने विश्वविद्यालय में बोलने वाले सूर्य के किसी व्यक्ति को सुना और उसने कहा कि जावा 6 का कचरा कलेक्टर पुराने लोगों की तुलना में बहुत बेहतर है, जिसके लिए बड़े अनुप्रयोगों के लिए लगभग हर समय जटिल ट्यूनिंग की आवश्यकता होती है। जावा 6 जीसी एसएमपी पर बहुत बेहतर पैमाने पर प्रतीत होता है।

+1

क्या 'jconsole' ऑफ़लाइन लॉग फ़ाइलों का समर्थन विश्लेषण करता है? मुझे लगता है कि केवल _Connect_ मेनू है। –

5

मैं YourKit java profiler का उपयोग करता हूं, जो आपको इस तरह की चीज को मापने देता है, और बहुत कुछ, लेकिन लॉग का विश्लेषण करने के बजाय अपने प्रारूप का उपयोग करने देता है। यह जावा 5 के तहत और अधिक कर सकता है, लेकिन 1.4 के तहत काम करना चाहिए।

3

सूर्य से VisualGC आज़माएं। जेडीके 4 और 5 संस्करण हैं जो आपको ईडन, जेनरेशनल और परम स्पेस में क्या हो रहा है इसका एक अच्छा दृश्य देते हैं। आपको एक जार जोड़ने और पीआईडी ​​और बॉब के अपने चाचा को जोड़ने की जरूरत है।

+2

विजुअलजीसी विजुअलVM में ग्राफिकल प्लगइन के रूप में भी उपलब्ध है लेकिन यह केवल "लाइव" काम करता है और जहां तक ​​मुझे पता है कि यह एक जीसी लॉग फ़ाइल को संसाधित करने में सक्षम नहीं है। –

+0

हां, मैं अब भी विजुअल वीएम की सिफारिश करता हूं। मैंने यह तीन साल पहले लिखा था; दुनिया बदल गई है। मैं हर जवाब की समीक्षा नहीं करता हूं और उन्हें अद्यतित रखता हूं। – duffymo

+3

मैं सहमत हूं। मैं बस यह इंगित करना चाहता हूं कि प्रश्न जीसी लॉग फ़ाइल "ऑफलाइन" का विश्लेषण करने के बारे में है जबकि विजुअलजीसी एक "लाइव" टूल है। –

7

jconsole से भी बेहतर visualvm है, जिसे सूर्य द्वारा स्वतंत्र रूप से विकसित और वितरित किया जाता है। इसमें gchisto नामक एक जीसी विश्लेषण प्लगइन है जो आपकी मदद कर सकता है।

संपादित करें: क्षमा करें, मुझे आपकी जेडीके 1.4.2 आवश्यकता नहीं दिखाई दे रही है। उस मामले में visualvm आपकी मदद नहीं करेगा, हां।

+0

जीसी हिस्टो अच्छा है। लेकिन उन्हें विश्लेषण के लिए ढेर आकार भी जोड़ना चाहिए। –

+1

@ fred-o: 'visualvm' बहुत अच्छा लग रहा है, लेकिन इसमें जीसी लॉग कैसे खोलें? –

28

gcviewer जो आप चाहते हैं वह करता है।

+2

gcviewver 2008 में जारी किया गया था। क्या यह सूर्य JVM 1.6 लॉग सही ढंग से पार्स कर सकता है? मेरे लिए यह बहुत से 'संख्याफॉर्मेट अपवाद' उत्पन्न करता है लेकिन कुछ जानकारी दिखाता है। प्रश्न यह है: क्या मैं इसे भरोसा कर सकता हूं? –

+0

अब तक मुझे लगता है कि आप इसे भरोसा कर सकते हैं। – kohlerm

+12

मैं वास्तव में https://github.com/chewiebug/GCViewer –

12

मुझे लगता है कि कुछ लोगों को जावा जांच जो वास्तव में सवाल राज्यों के रूप में पार्स नहीं है कचरा संग्रहण लॉग ...

मैं कोशिश की है दूसरों (gcviewer, gchisto, आईबीएम की) और सबसे अच्छा मैंने पाया उपकरण जोड़ रहे हैं जीसी लॉग का विश्लेषण करने के लिए HPjmeter

यह मुख्य रूप से एचपी-यूएक्स जेवीएम के लिए है, लेकिन यह आमतौर पर सूर्य जेवीएम के साथ भी काम करता है और यह एक अच्छा काम करता है। VisualVM के लिए

alt text http://blog.xebia.com/wp-content/uploads/2008/09/hpjmeter-gctime.jpg

+0

से नवीनतम संस्करण प्राप्त करने की अनुशंसा करता हूं, मैं एचपीजेमीटर 4.1.00.00 के साथ खेल रहा हूं और मैं इसके साथ सूर्य जेडीके लॉग फाइल नहीं खोल सकता। उनके पास उनके प्रश्न में ** ब्रेवेट्री ** द्वारा निर्दिष्ट प्रारूप है। –

+0

यह 'आमतौर पर' सूर्य जेवीएम के लिए काम करता है लेकिन मुझे कुछ सीएमएस जीसी संदेशों को पढ़ने में समस्याएं आईं जिन्हें मुझे फ़ाइल लोड करने के लिए फ़िल्टर करना पड़ा था। कौन सा जेडीके संस्करण लॉग है? जेवीएम शुरू करने के लिए कौन सी जीसी तर्क का उपयोग किया जाता है? – fglez

+0

सन जेडीके 1.6u27, '-verbose: gc -XX: + PrintGCDetails'। लेकिन समस्या अधिक मामूली है: '* .log' फ़ाइलें प्रोग्राम उपलब्ध फ़िल्टर में सूचीबद्ध नहीं हैं, इसलिए एचपीजेमीटर इसे नहीं खोल सकता है। जब मैं इसका नाम बदलता हूं, तो एचपीजेमीटर विफल रहता है। आप जीसी द्वारा उत्पादित फ़ाइलों का नाम कैसे देते हैं? –

2

gchisto प्लगइन काम नहीं करता है https://gchisto.dev.java.net/

मैं jdk1.6 के लिए printgc के सभी विवरण के साथ एक फ़ाइल है, लेकिन है कि पढ़ने के लिए एक उपकरण नहीं पा सके। jdk1.5 साथ पहले हम HPjmeter इस्तेमाल किया यह ठीक काम किया, लेकिन अब jdk1.6 साथ यह निम्नलिखित की कोशिश की नहीं

करता है: आईबीएम पैटर्न मॉडलिंग और जावा कचरा कलेक्टर के लिए विश्लेषण उपकरण - यह फ़ाइल पहचानता नहीं है। GCCollector काम नहीं करता है, यह विश्लेषण के लिए फ़ाइल पढ़ने पर जारी है।

3

कुछ साल पहले, जॉन कॉम्स (हॉटस्पॉट जीसी समूह) ने प्रिंटगैस्टैट्स को जारी किया था, "कचरा संग्रह के बारे में आंकड़ों को संक्षेप में, विशेष जीसी विराम समय योग, औसत, अधिकतम और मानक विचलन में संक्षेप में सारांशित करने के लिए।" http://java.net/projects/printgcstats

7

सबसे शक्तिशाली उपकरण मैं दोनों आईबीएम और हॉटस्पॉट JVM लॉग के साथ काम करते हैं और उन्हें कल्पना करने के लिए मिल गया है आईबीएम की PMAT है: https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=22d56091-3a7b-4497-b36e-634b51838e11

मैं इसे खोजने के स्क्रिप्ट की एक प्रति java.net पर होस्ट की है दोनों तेजी से और आईबीएम समर्थन सहायक में उपकरण की तुलना में अधिक जानकारी देता है। यह लगातार जुलाई 12 में जारी किया जा रहा है।

हालांकि पॉलिसी सीएमएस के साथ लॉग पार्स करने में कुछ समस्याएं हैं, लेकिन उम्मीद है कि इसे ठीक किया जा सकता है।

प्रिंटजीसीस्टैट भी बहुत अच्छा है, और अच्छे आंकड़े देता है, लेकिन समय के साथ विज़ुअलाइज़ेशन के लिए नहीं, जिसके लिए कुछ काम की ज़रूरत है।

8

मैंने ऑनलाइन उपकरण http://gceasy.io की कोशिश की, यह मेरे सूर्य जेडीके 1.8 जीसी लॉग पढ़ सकता है।

+0

जेआरॉकिट के लिए भी काम करना प्रतीत होता है। – mrswadge

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