2010-09-23 12 views
6

का उपयोग कर W3WP CPU समस्याओं का पता लगाना हमारे उत्पादन सर्वर पर हमारी W3WP प्रक्रिया लगातार उच्च है। यह 100% पर अधिकतम नहीं है लेकिन 90% एस में थोड़ा सा कूदता है। इस पर ध्यान देने के लिए मैंने जेटब्रेन डॉटट्रेस का उपयोग करके लाइव एपिकेशन का प्रोफाइल किया।जेटब्रेन डॉटट्रेस

परिणाम अपेक्षित थे। सभी धीमी विधियां एनएचबीरनेट फ़ंक्शन थीं जो हमारे डेटाबेस से पूछती थीं। मेरा सवाल यह है कि, ये धीमी विधियां हमारे वेब सर्वर पर सीपीयू को एक्टौली प्रभावित करती हैं, क्योंकि हमारा डेटाबेस सर्वर एक अलग मशीन पर है। निश्चित रूप से यदि डेटाबेस सर्वर कुछ काम कर रहा है तो वेब सर्वर jsut प्रतिक्रिया के लिए इंतजार कर रहा है, और सीपीयू ऊपर नहीं जाना चाहिए?

यदि ऐसा है, तो मैं डॉटट्रेस (या नेक्सेसरी के दूसरे उपकरण) का उपयोग कैसे कर सकता हूं, जहां सीपीयू का उपयोग सर्वर के विपरीत किया जा रहा है, बस कहीं और प्रतिक्रिया का इंतजार कर रहा है?

dotTrace हॉट स्पॉट alt text

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

+0

क्या आप dotTrace प्रोफाइल के कुछ प्रासंगिक स्क्रीनशॉट पोस्ट कर सकते हैं? –

+0

मैंने प्रश्न –

+0

पर हॉटस्पॉट स्क्रीनशॉट जोड़ा है क्या आपने समस्या हल की है? बुराई के स्रोत को खोजने के लिए आपने किन टूल्स का उपयोग किया है? – Pavel

उत्तर

2

यह एनएचबेर्नेट स्वयं भी हो सकता है जो आपके वेब सर्वर पर कड़ी मेहनत कर रहा है, और डेटाबेस वास्तव में अपेक्षाकृत कम कर रहा है।

मैं यह देखने के लिए एक एसक्यूएल प्रोफाइलर चलाने की अनुशंसा करता हूं कि यह वास्तव में ऐसा है कि डेटाबेस एक कॉल (एनएचबीरनेट से) पर लंबा समय ले रहा है।

मेरा अनुमान है कि आप एनएचबीर्नेट को डेटाबेस में बहुत सारी कॉल और बहुत सी कॉलिंग देखेंगे और फिर उन्हें प्रोसेस कर रहे हैं (आपके एआरबी सर्वर सर्वर पर) और यह उच्च CPU के लिए ज़िम्मेदार है।

यदि आपके पास जुड़ने पर बहुत आलसी आ रही है, तो आप उस स्थिति में समाप्त हो सकते हैं जहां NHibernate कई बनाता है, डेटाबेस को कई कॉल एक अनुरोध के लिए डेटा प्राप्त करते हैं।

+0

डेटाबेस क्वेरी अपेक्षाकृत तेज़ी से लौटती हैं, और मैंने जांच की है कि हम केवल डेटाबेस की क्वेरी कर रहे हैं जब हमें आवश्यकता है। मुझे आश्चर्य नहीं है कि एनएचबीर्नेट कॉल सबसे लंबे समय तक ले रहे हैं, लेकिन क्या यह समझ में आता है कि ये उच्च CPU तक मेल खाते हैं? –

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