2011-08-23 16 views
13

को स्थानांतरित करने के लिए VisualVM का उपयोग कैसे करें जैसा कि मैंने Performance drop after 5 days running web application, how to spot the bottleneck? में पोस्ट किया है, मुझे एक ऐसे एप्लिकेशन के साथ समस्या है जो थोड़ी देर के लिए चलने के बाद धीमा हो जाए।बाधा/समस्या

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

क्या कोई मुझे कुछ पॉइंटर्स दे सकता है?

यहाँ स्नैपशॉट (ऐप्स) कर रहे हैं:

[1] http://www.2shared.com/file/W4XJ6HtE/application-1314108550032.html

[2] http://www.2shared.com/fadmin/22521338/f512f97e/application-1314097232727.apps.html

धन्यवाद!

संपादित करें: करीब देखकर, मैंने देखा है कि सीपीयू का भी ज्यादा उपयोग नहीं किया जा रहा है .. और सिस्टम वास्तव में धीमा है!

+0

दूसरे स्नैपशॉट में पर सीमा सेटिंग्स (जो एक घंटे से अधिक चला जाता है, जबकि पहले 4 सेकंड के ऊपर जाता है केवल) वहाँ CPU पर कुछ बोझ है और लगभग बिना किसी लोड बनाया जीसी द्वारा यदि सीपीयू बाधा है तो आपको प्रोफाइल करने का प्रयास करना चाहिए कि कौन सी विधियां इसका कारण बन रही हैं। आप इसे jvisualvm के भीतर भी कर सकते हैं। – ziggystar

+0

एप्लिकेशन किस ऐप सर्वर पर चल रहा है? क्या यह एक वेब सर्वर फ्रंट एंड के पीछे है? यदि हां, तो 2 जुड़े हुए हैं (कौन सा मॉड्यूल)। – atrain

उत्तर

4

दरअसल, VisualVM की तुलना में कुछ बेहतर टूल हैं।

आप JProfiler है, जो एक अच्छा प्रोफाइलर है की कोशिश (लेकिन भुगतान) कर सकता है

और तुम Netbeans प्रोफाइलर, जो नि: शुल्क है और VisualVM के साथ काम करता है महान

की कोशिश कर सकते केवल वास्तविक राज्य देखेंगे आपके आवेदन (मेमोरी और सीपीयू उपयोग, जेएमएक्स, कक्षाएं लोड, आदि)।

+3

बेहतर उपकरण हैं; लेकिन इसका मतलब यह नहीं है कि आपको इस मामले में उनकी आवश्यकता है (जो मैं वर्तमान में न्याय नहीं कर सकता)। JvisualVM में एक प्रोफाइलर (दोनों उपकरण और नमूनाकरण) और एक स्मृति प्रोफाइलर भी शामिल है। इसके अलावा आप अतिरिक्त प्लगइन्स इंस्टॉल कर सकते हैं। – ziggystar

+0

@ziggystar जानना अच्छा है, उसे नहीं पता था! –

6

पहले चरण के रूप में मैं यह निर्धारित करने का सुझाव दूंगा कि वास्तव में धीमा क्या है। क्या यह धीरे-धीरे कुछ नौकरी निष्पादित करता है? या विभिन्न ग्राहकों से नौकरियों को संभालने पर कम थ्रूपुट प्रदर्शित करता है?

कौन सा संसाधन अपर्याप्त है?

  • आप कुछ बाहरी सेवाओं (डेटाबेस या RPC सर्वर की तरह) का उपयोग कर रहे हैं, तो हमेशा उनकी प्रतिक्रिया समय लॉग इन करें और किसी भी अन्य अनुकूलन चरणों करने से पहले यह जाँच करें।
  • यह प्रोसेसर शक्ति की कमी हो सकती है। बस सीपीयू उपयोग देखें।
  • यह स्मृति की कमी हो सकती है। इस तरह के मुद्दों का पता लगाने के लिए जीसी लॉगिंग का प्रयोग करें। इसके बारे में good topic है।
  • यह हार्ड ड्राइव की गति की कमी हो सकती है। Iostat का उपयोग करें और अपनी एचडीडी प्रदर्शन सीमाओं को जानें।
  • यह नेटवर्क थ्रूपुट की कमी हो सकती है। नेटवर्क चैनल उपयोग की जांच करें।
  • यह भी संभव है कि आप कुछ ओएस-विशिष्ट सीमाओं से बाहर हो जाएं, जैसे खोले गए फाइलों और/या नेटवर्क सॉकेट की संख्या। जांचें कि आप लॉग फ़ाइलों में सभी ओएस-स्तरीय अपवाद की सही रिपोर्ट करते हैं।

जैसा कि आपने पहचाना है कि कौन सा संसाधन अपर्याप्त है और आपके प्रोग्राम का हिस्सा जो इससे ग्रस्त है, आप अनुकूलित करने के लिए कोड के टुकड़े को खोजने का प्रयास कर सकते हैं। एक यादृच्छिक उपकरण लेना और बिना किसी जानकारी के जानने के लिए अपना आवेदन चलाएं, इसका कोई मतलब नहीं है।

मेरे व्यक्तिगत अनुभव से यह बहुत ही दुर्लभ मामला है जब आपके पास एक धीमी विधि है, जो एक प्रोफाइलर के साथ मिल सकती है।सबसे अधिक संभावना यह एक अप्रत्याशित आईओ अपने एल्गोरिथ्म या बुरा डेटाबेस स्कीमा में कहीं तुल्यकालन है और/या।

0

मैं सही बल्ले अपने अपने आवेदन के साथ एक मुद्दा है, इसकी एक विंडोज़ आधारित हैं वायरस स्कैनर प्रणाली देखो, उस समय चल रहा है किसी भी अद्यतन अनुसूचक बंद मान नहीं होता।

सुनिश्चित करें कि आपके लॉग पर रोलिंग कर रहे हैं और इसलिए वे नियंत्रण से बाहर नहीं बढ़ रहे हैं डिबगिंग सही तरीके से फ़िल्टर किया गया है।

चेक किसी भी लंबे चल प्रश्नों के लिए एसक्यूएल स्नैपशॉट। डीबी लोड और डीबी ढेर की जांच करें।

आप दृश्य वीएम कुछ समय से चल तो सुनिश्चित करें कि आप कुछ धागे काम स्वीकार करने के लिए तैयार है/कनेक्शन के रूप में पीला (निष्क्रिय) दिखाई देगा।

अंधेरे Eclipse Memory Analyzer

में एक शॉट एक ढेर डंप जब आप एक मंदी नोटिस और विश्लेषक के माध्यम से इसे चलाने लो।

यदि आपका एक यूनिक्स आधारित प्रणाली की जांच फ़ाइल वर्णनकर्ता ulimit -एक यकीन है कि जावा प्रक्रिया max'd बाहर नहीं है बनाने के लिए पर।

चेक टीसीपी कोई देरी और Nagle सर्वर