मेरे पास जावा एप्लिकेशन (वेब-आधारित) है जो कई बार कई घंटे के लिए बहुत अधिक CPU उपयोग (लगभग 9 0%) दिखाता है। लिनक्स TOP
कमांड यह दिखाता है। आवेदन पुनरारंभ करने पर, समस्या दूर हो जाती है।जावा एप्लिकेशन में उच्च CPU उपयोग - क्यों?
तो जांच करने के लिए:
मैं थ्रेड डंप ले क्या धागे कर रहे हैं खोजने के लिए। 'RUNNABLE'
राज्य में कई थ्रेड पाए जाते हैं, कुछ अन्य राज्यों में कुछ। बार-बार थ्रेड डंप लेने पर, मुझे कुछ धागे दिखाई देते हैं जो हमेशा 'RUNNABLE'
राज्य में मौजूद होते हैं। तो, वे अपराधी प्रतीत होते हैं।
लेकिन मैं निश्चित रूप से यह बताने में असमर्थ हूं कि थ्रेड सीपीयू को घुमा रहा है या एक अनंत लूप में चला गया है (जिससे उच्च CPU उपयोग होता है)।
लॉग आवश्यक रूप से मदद नहीं करते हैं, क्योंकि अपमानजनक कोड कुछ भी लॉगिंग नहीं कर सकता है।
मैं कैसे जांच करूं - एप्लिकेशन का क्या हिस्सा या थ्रेड-थ्रेड उच्च CPU उपयोग कर रहा है? - कोई अन्य विचार?
आप पहले से ही एक प्रोफाइलर की कोशिश की? – andreapier
आपके थ्रेड डंप को यह भी दिखाना चाहिए कि कोड में इन रननेबल थ्रेड थ्रेड डंप के दौरान कहां हैं। आपको अपने कोड में देखने की ज़रूरत है। आईआईआरसी "रननेबल" धागे I/O पर इंतजार कर रहे हैं और सीपीयू नहीं ले रहे हैं, लेकिन यह शुरुआती है और मैं अभी भी अपनी कॉफी की देखभाल कर रहा हूं। –
एंड्रैपीयर> हालांकि मैं प्रोड पर्यावरण में एक प्रोफाइलर का उपयोग करने में सक्षम नहीं हो सकता, लेकिन क्या एक प्रोफाइलर बताएगा कि थ्रेड सीपीयू को किस प्रकार दबा रहा है? – Jasper