आप कैसे जान सकते हैं कि w3wp.exe क्या कर रहा है? (या प्रदर्शन समस्या का निदान कैसे करें)


42

मुझे हमारे द्वारा की गई साइट में प्रदर्शन की समस्या हो रही है, और मुझे यकीन नहीं है कि इसका निदान कैसे शुरू किया जाए।

संक्षिप्त विवरण है: हमारे पास एक बहुत छोटी साइट है ( http://hearablog.com ) बहुत कम ट्रैफ़िक के साथ, एक भद्दे समर्पित सर्वर में, CPU हमेशा बहुत अधिक होता है, कभी-कभी यह मिनटों के लिए 100% रहता है, और w3wp.exe इसका अधिकांश हिस्सा ले रहा है। एक विशिष्ट परिदृश्य w3wp.exe 60% लेता है, और SQL सर्वर लगभग 30% लेता है। हमारा DB बहुत छोटा है।

लंबा विवरण और अधिक विवरण:

  • इस साइट को Cari.Net द्वारा बहुत भद्दे सर्वर में होस्ट किया गया है। शुरुआत से ही हमें लग रहा था कि सर्वर काफी सही ढंग से व्यवहार नहीं कर रहा है, जैसे कुछ चीजें बस बहुत लंबा समय लेती हैं, इसलिए यह गेट गो से कॉन्फ़िगरेशन की समस्या हो सकती है। यह हो सकता है यह भी हो सकता है कि हम एक आभासी सर्वर हो रही है, जबकि हम, हालांकि हम कोई सबूत नहीं है कि यह संकेत मिलता है चाहते हैं, तथ्य यह है कि सर्वर काफी धीमी गति से हो जाता है के अलावा एक समर्पित एक है माना जाता कर रहे हैं।

  • SQL 2008 एक्सप्रेस के साथ सर्वर Windows 2008 मानक 64-बिट है

  • हार्डवेयर एक Celeron 2.80 GHz, 1Gb RAM है

  • डेटा एक्सेस के लिए एंटिटी फ्रेमवर्क का उपयोग करते हुए वेबसाइट ASP.Net MVC में विकसित की गई है।

  • अब, यह बहुत भद्दा हार्डवेयर है, लेकिन मेरे पास इन लोगों के साथ अन्य सर्वर थे, समकक्ष (या बदतर) एचडब्ल्यू के साथ, और प्रदर्शन इस से बेहतर है। उस ने कहा, अन्य सर्वरों में W2003 और SQL2005 हैं, और मैं ASP.Net "WebForms" 2.0, कोई MVC, कोई LINQ, कोई EF का उपयोग नहीं कर रहा हूं; इसलिए मुझे यकीन नहीं है कि 2008 / अन्य सामान पर जाने का मतलब है कि एक बड़ा प्रदर्शन दंड की उम्मीद है।

  • मैं नियमित रूप से एमपी 3 फ़ाइलों (5-20 एमबी) की सेवा कर रहा हूं, जो थोड़ा असामान्य भार है, हो सकता है कि किसी तरह की समस्या पैदा हो?
    कि w3wp CPU का एक बहुत उपयोग करने का कारण होगा?

  • डिस्क का उपयोग बहुत कम लगता है। मेमोरी आमतौर पर 90% के आसपास होती है, लेकिन डिस्क का उपयोग यह इंगित करता है कि यह बहुत पेजिंग नहीं है।

  • मैं टन ई-मेल की हर दिन एसक्यूएल समय समाप्ति के बारे में 30 सेकंड के ऊपर ले जा प्रश्नों के लिए, हालांकि हमारे सभी प्रश्नों बिल्कुल स्पष्ट कर रहे हैं (या होना चाहिए, लेकिन एफई यह पंगा लेना हो सकता है)।

यह वही है जो संसाधन मॉनिटर 100% सीपीयू के इन "स्प्रिंट" में से एक में दिखता है, अगर वहां कुछ भी उपयोगी है।

वैकल्पिक शब्द

और कुछ प्रदर्शन काउंटरों का एक स्नैपशॉट: वैकल्पिक शब्द

अब, जो मुझे बहुत भ्रमित करता है वह यह है कि w3wp का सीपीयू उपयोग केवल इतना अधिक है। यह वास्तव में बहुत कुछ नहीं करना चाहिए ... तो मेरे सवाल हैं ...

  • क्या यह पता लगाने का कोई तरीका है कि यह क्या कर रहा है? शायद यह भी प्रोफ़ाइल?
  • कोई भी प्रदर्शन काउंटर जिन्हें मुझे देखना चाहिए?
  • क्या इस हार्डवेयर / सॉफ्टवेयर विन्यास को देखते हुए उम्मीद की जा सकती है?
  • क्या यह किसी प्रकार की कॉन्फ़िगरेशन विफलता के कारण हो सकता है, जहां आप ढूंढना शुरू करेंगे?

आपका बहुत बहुत धन्यवाद।
डैनियल मैगलियोला

जवाबों:


42

आप IIS प्रबंधक के अंदर वर्कर प्रक्रिया यूआई का भी उपयोग कर सकते हैं और वर्तमान में निष्पादित होने वाले अनुरोधों का निरीक्षण कर सकते हैं और देख सकते हैं कि वे कहां अटक रहे हैं। Open IIS Manager-> ट्री में सर्वर पर क्लिक करें-> डबल क्लिक वर्कर प्रोसेस आइकॉन-> डबल क्लिक करें वर्कर प्रक्रिया जो वर्तमान समय में निष्पादित अनुरोधों को देखने के लिए सीपीयू का उपभोग कर रही है ताकि आप देख सकें कि कौन सा मॉड्यूल समय ले रहा है।

यह भी अनुरोध करने में विफल रहे कि वे लंबे समय ले रहे हैं, यह देखने के लिए अनुरोध के अनुसार कुछ समय को ट्रैक करने में विफल अनुरोध ट्रेसिंग का उपयोग करें।


2
यह आशाजनक है, यह वास्तव में बिल्कुल वैसा ही लगता है जैसा मैं देखना चाहता हूं, लेकिन वास्तव में वे स्क्रीन खाली दिखती हैं। यह स्पष्ट रूप से केवल अनुरोधों को दिखा रहा है जो शीर्ष पर बड़े संकेत के अनुसार एक सेकंड से अधिक समय ले रहे हैं, और हमारा कोई भी अनुरोध स्पष्ट रूप से नहीं है, क्योंकि सूची खाली है। यह कैसे और अधिक अनुरोध दिखाने के लिए पर कोई विचार? 1s फ़िल्टर कैसे कम करें? धन्यवाद!
डैनियल मैगलियोला

1
आप फ़िल्टर में 0 टाइप कर सकते हैं और Go पर क्लिक करें, जो इसे 0 सेकंड में सेट करेगा। इसके अलावा, आप एक उन्नत कमांड प्रॉम्प्ट से "% windir% \ system32 \ inetsrv \ appcmd.exe सूची अनुरोध" चला सकते हैं
कार्लोस एगुइलर मार्स

1
बहुत बहुत धन्यवाद कार्लोस! यह वही है जो मैंने एक अनुरोध (ए क्रॉन हमारे पास) को खोजने के लिए किया था जो हर 5 मिनट में मेरे सर्वर को मार रहा था (इसे चलाने में 3.5 मिनट लगते थे, इसलिए यह लगभग लगातार 100% सीपीयू था)। धन्यवाद!!!
बजे डैनियल मैगलियोला

1
इस UI ने मुझे बताया कि किस URL तक पहुँचा गया था; दुर्भाग्य से यह एक asmx webservice के लिए एक पोस्ट है, और वह डेटा उपलब्ध नहीं है। (हेडबैंग)
रॉस प्रेसर

5

ठीक है, शुरू करने के लिए - सर्वर वास्तव में भद्दा है। लेकिन यह पर्याप्त होना चाहिए।

  • वर्चुअलाइजेशन के लिए, अपने ड्राइवरों की जाँच करें। मुझे पता है कि सीपीयू (और मैं किसी को एक सेलेरॉन पर हाइपर-वी या एसएक्स लगाता हूं) को छुपाता है, लेकिन कोई वायरटलाइज़ेशन प्लेटफॉर्म नहीं है, लेकिन डिस्क आदि के लिए ड्राइवर एक संकेत हैं।

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

मैं:

  • इस समय सामान निष्पादन के लिए लॉग की जाँच करें।
  • OS को 2008 R2 में अपग्रेड करें - एक बहुत अधिक जानकारी वहां उपलब्ध है।

परीक्षण के लिए:

  • आपके देव वातावरण में साइट की एक प्रति बनाते हैं और कुछ प्रदर्शन परीक्षण चलाते हैं।
  • वहां प्रोफाइलिंग करें।
  • असफल अनुरोधों का पता लगाने के लिए असफल अनुरोध ट्रैकिंग का उपयोग करें।

http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/

वहाँ कुछ शुरू किया है। समस्याएँ अधिक होने पर यह आपको संकेत दे सकता है - hm - "श्रेणीबद्ध"।

मैं भी लंबी अवधि के प्रदर्शन लॉग रखना होगा। अपने आईओ के लिए बाहर देखो (सेकंड / पढ़ें, सेकंड / लिखना बहुत ही प्रासंगिक हैं)। बाकी सभी IO वार बहुत अस्पष्ट हैं - लेकिन एक बार जब आपका IO इससे अधिक समय लेना शुरू कर दे, तो डिस्क पीछे छूट जाती है।

मैं इस बिंदु पर एक कॉन्फ़िगरेशन समस्या को दूर करूंगा - कम से कम प्राथमिक संकेतक के रूप में। कुछ आपके W3p रेज़ॉर्स का उपयोग करता है, अब आपको यह पता लगाने की आवश्यकता है कि यह क्या है।

सामान्य तौर पर, यह एक सर्वर नहीं है जिसे मैं शारीरिक रूप से पसंद करूंगा - यह इतना छोटा है, यह कोई मतलब नहीं है IMH वहाँ मशीन havea है। वर्चुअल बेहतर होगा;)


उत्तर देने के लिए आपका धन्यवाद। कुछ सवाल: इस समय आप सामानों के निष्पादन के लिए कौन से लॉग की जाँच करेंगे? (खेद है कि अगर यह एक नौसिखिया सवाल है) - अपग्रेड ओएस: हम कोशिश कर सकते हैं कि, लेकिन मुझे डर है कि यह सामान तोड़ सकता है, हो सकता है, यह कितना सुरक्षित है? - देव वातावरण: समस्या यह है कि मेरे देव परिवेश में यह ठीक काम करता है। सीपीयू नगण्य है, अनुरोध विफल नहीं होते हैं, आदि
डैनियल मैगियोला

जैसा कि I / O लॉग के लिए: मैंने अभी आपके द्वारा उल्लिखित काउंटरों को जोड़ा है, और सीपीयू अधिक होने पर वे सभी 0 पर हैं। मैंने अभी कुछ प्रदर्शन काउंटरों का स्क्रीनशॉट जोड़ा है जिन्हें मैं देख रहा हूं। मुझे पता है कि एक स्नैपशॉट पूरी कहानी नहीं बताता है, लेकिन वे मूल्य बहुत स्थिर होते हैं। क्या आपको लगता है कि वर्तमान कनेक्शन की संख्या (जिसके लिए मेरे पास कोई स्पष्टीकरण नहीं है) एक समस्या हो सकती है? कैसे उन कनेक्शनों का अनुरोध / कर रहे हैं यह पता लगाने के लिए कोई विचार? आपके विचार से कोई भी अन्य काउंटर इस तरह के निदान के लिए उपयोगी हो सकता है?
डैनियल मैगलियोला

वैसे, R2 काफी सुरक्षित है। मैंने सब कुछ अपग्रेड किया और कभी कोई समस्या नहीं हुई। किसी भी तरह .... यह एक सीपीयू मुद्दा है और इसे श्रेष्ठ बनाना भयानक हो सकता है, विशेष रूप से यह दिया जाता है कि आप एक प्रॉसेसर को स्थापित करने के लिए पर्याप्त रैम न दें। मैं वास्तव में एक पूर्ण पुनर्स्थापना का प्रयास करूंगा। हां, बेकार है, लेकिन इसका मतलब है कि आप R2 को नए सिरे से स्थापित कर सकते हैं और देखें कि क्या समस्या बनी रहती है। बुरी बात यह है कि आप एक आरक्षित प्रणाली को आगे नहीं बढ़ाते हैं, इसलिए आप पहचान नहीं सकते हैं कि समस्या "स्थानीय" है या अधिक सामान्य है। वैकल्पिक रूप से: बंद IIS, सभी अस्थायी फ़ोल्डरों उपयोग में पोंछ, भी
टॉम टॉम

संकलन के लिए और देखें कि क्या होता है जब आप पुनः आरंभ करते हैं। R2 के साथ आप देख सकते हैं कि क्या / क्या फ़ाइलें IIS द्वारा खुली रखी जाती हैं। क्या यह एक वेब अनुप्रयोग के लिए स्थानीय है, या क्या यह भी है कि यदि सभी वेबसाइटों को रोक दिया जाए? कोशिश करने के लिए अगली बात - सभी साइटों को बंद करें और पता लगाएं कि कौन सी चीजों को तोड़ता है।
टॉमटॉम

अंत में, वर्चुअल सर्वर के साथ समस्या यह है कि जहाँ तक मैंने पाया है, हम एक ही हार्डवेयर के लिए अधिक या समान भुगतान करते हैं, साथ ही, बैंडविड्थ बिल हत्यारा है (ध्यान रखें कि हम ऑडियो फ़ाइलों की सेवा करते हैं)। अगर हमें करना है, तो हम एक बड़े सर्वर में चले जाएंगे, लेकिन ईमानदारी से, हमारे पास जो ट्रैफ़िक है, उसमें कुछ समस्या है, हमें 100% सीपीयू कभी भी उपयोग नहीं करना चाहिए ..
डैनियल मैगियोला

4

आप w3wp प्रक्रिया के तहत चल रहे व्यक्तिगत थ्रेड्स की निगरानी के लिए प्रोसेस एक्सप्लोरर नामक प्रोग्राम का उपयोग करने का प्रयास कर सकते हैं । यह आपको यह देखने की अनुमति देना चाहिए कि धागा क्या नुकसान पहुंचा रहा है।


3

मैं अपने w3wp प्रक्रिया को डंप करने के लिए माइक्रोसॉफ्ट के डिबग डायग्नोस्टिक टूल का उपयोग करके वास्तव में बहुत भाग्यशाली था और फिर उन चीजों के लिए धागे और स्टैक के निशान की जांच कर रहा था जो लॉक हो रहे थे। यहां तक ​​कि यह आपको अनुरोधित पृष्ठ भी बताएगा कि थ्रेड जो बहुत अच्छा है

http://www.microsoft.com/en-us/download/details.aspx?id=26798


1

मैं लाइन के नीचे टॉमटॉम से सहमत हूं, विशेष रूप से इस बिंदु पर एक आभासी से बेहतर लाभ प्राप्त करने के बारे में। समस्या को कम करने के लिए स्थानीय रूप से डिबगिंग / प्रोफाइलिंग करना सही बात है।

मैं अपने कर्णक शानदार टोपी और केप पर जा रहा हूं और पहले लिफाफे के लिए पूछ रहा हूं। राम विद्रोह। OS, ASP.NET और लालची SQL सर्वर एक्सप्रेस को 1GB में रखने पर आपको क्या मिलता है।

मुझे विश्वास है कि आपका मुद्दा यह है कि SQL सर्वर एक्सप्रेस एक बफ़र पूल के लिए सभी उपलब्ध रैम में खींच रहा है और इसे जारी करने के लिए धीमा है। अधिक जानकारी के लिए http://support.microsoft.com/kb/321363 देखें । इसके अलावा, IIS में 256MB का डिफ़ॉल्ट कैश है जिसे आपको ट्विस्ट ( https://stackoverflow.com/questions/2853135/controlling-asp-net-output-cache-memory-usage ) करने की आवश्यकता हो सकती है । डिबग डायग्नोस्टिक्स इस समस्या निवारण के लिए एक महान उपकरण है (ठीक है, शायद एक स्लेजहैमर)।

http://technet.microsoft.com/en-us/library/bb742546.aspx देखने में काफी सुंदर लेख है। http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/706c653a-16b0-4696-85ee-9ae3552a582e ऐप रीसाइक्लिंग के लिए एक और संभावित मुद्दे के रूप में पागल हो गया है।


1

W3wp.exe प्रक्रिया की अलग-अलग विशेषताओं को देखने के लिए परफ़ॉर्म की "प्रक्रिया" काउंटर का उपयोग करें। वर्कर प्रक्रिया के लिए CPU समय का कितना हिस्सा है? उच्च कर्नेल बार पेजिंग का संकेत हो सकता है, लेकिन आप कहते हैं कि आप आश्वस्त नहीं हैं। अन्य संभावनाएं डफ ड्राइवर हैं। कार्यकर्ता प्रक्रिया में 23 धागे सक्रिय हैं, जो अच्छा है, लेकिन वे क्या कर रहे हैं? SysInternals 'ProcessExplorer को थोड़ा और खोदने की कोशिश करें; आप यह भी देख सकते हैं कि टीसीपी / आईपी कनेक्शन क्या हैं। मैंने SQL एक्सप्रेस का उपयोग नहीं किया है, लेकिन क्या इसके बड़े भाई की तरह मेमोरी ट्यूनिंग पैरामीटर हैं। क्या SQL भूख से मर रहा है, जिससे अत्यधिक पेजिंग हो रही है?


चलो देखते हैं कि क्या मैं यह सही कर रहा हूं ... मैंने% प्रोसेसर समय और% उपयोगकर्ता समय काउंटरों को जोड़ा, दोनों w3wp प्रक्रिया के लिए, और वे दोनों एक-दूसरे से पूरी तरह मेल खाते हैं। क्या इसका मतलब है कि कोई कर्नेल समय नहीं है, या क्या मैं इसे गलत तरीके से देख रहा हूं? (क्षमा करें, मैं इस पर एक नौसिखिया हूँ)
डैनियल मैगलियोला

0

यह पूरी तरह से संबंधित नहीं हो सकता है, लेकिन सत्यापित करें कि क्या आप अपने प्रश्नों में NOLOCK का उपयोग कर रहे हैं। यह SQL टाइमआउट के मामले में मदद कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.