IIS: धीमी नेटवर्क कनेक्शन के कारण धीमा समय लिया गया है, तो कैसे बताएं


10

Http://support.microsoft.com/kb/944884 के अनुसार , "जब धीमे नेटवर्क कनेक्शन पर क्लाइंट के लिए बड़ी प्रतिक्रिया या बड़ी प्रतिक्रियाएं भेजी जाती हैं, तो समय-लिया फ़ील्ड का मान अपेक्षा से अधिक हो सकता है"।

मेरे पास एक स्थिति है जहां एक ग्राहक कहेगा, "मैंने आपके वेब सर्वर को 10:03:24 पर एक अनुरोध भेजा और इसमें कुछ सेकंड लगे, क्यों?"। मैं इसे IIS लॉग में भी देख सकता हूं, लेकिन सर्वर के ASP.NET मॉड्यूल ने इसे 100ms, और CPU और डिस्क काउंटर के रूप में लिया।

मुझे संदेह है कि यह धीमे नेटवर्क कनेक्शन के कारण है। मैं इसे कैसे साबित कर सकता हूं?

अपडेट करें:

1) ये SOAP वेब सेवा अनुरोध हैं, इसलिए कोई एम्बेडेड ग्राफिक्स नहीं है, परिणामों के एक XML पृष्ठ के साथ बस एक HTTP POST है।

2) इसके अलावा, मैंने ग्राहक की ओर से नेटवर्क गति को थ्रॉटल करके इसे पुन: पेश किया है और लक्षण बिल्कुल समान हैं।

3) समस्या आंतरायिक है, जिसका अर्थ है कि ग्राहक के लिए समान अनुरोध सामान्य रूप से तेज है लेकिन कभी-कभी धीमा है। मैं नेटवर्क को थ्रॉटलिंग के अलावा खुद को पुन: पेश नहीं कर सकता। सर्वर का ASP.NET लॉगिंग हमेशा तेज दिखाता है, लेकिन जब क्लाइंट कहता है कि यह धीमा है तो IIS लॉगिंग इसे धीमा दिखाता है।

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


क्या ये अनुरोध सामान्य पृष्ठ दृश्य हैं जिन्हें एम्बेड करने वाले ग्राफिक्स और इतने पर लाने की आवश्यकता है? या क्या वे स्वचालित क्वेरीज़ हैं जो केवल एक ही पृष्ठ लौटाती हैं? क्या हम वास्तव में किसी पृष्ठ को लोड करने का समय या किसी एक HTTP अनुरोध का जवाब देने का समय माप रहे हैं?
डेविड श्वार्ट्ज

जवाबों:


4

मेरे पास एक स्थिति है जहां एक ग्राहक कहेगा, "मैंने आपके वेब सर्वर को 10:03:24 पर एक अनुरोध भेजा और इसमें कुछ सेकंड लगे, क्यों?"। मैं इसे IIS लॉग में भी देख सकता हूं, लेकिन सर्वर के ASP.NET मॉड्यूल ने इसे 100ms, और CPU और डिस्क काउंटर के रूप में लिया।

मुझे संदेह है कि यह धीमे नेटवर्क कनेक्शन के कारण है। मैं इसे कैसे साबित कर सकता हूं?

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

हालांकि, लोग अक्सर नेटवर्क को दोष देते हैं, जब वास्तव में गति के मुद्दे अपने स्वयं के नियंत्रण में अच्छी तरह से होते हैं। संभावित स्पष्टीकरण:

  • मान लीजिए कि उस पृष्ठ के लिए HTML खराब तरीके से लिखा गया था और यह आवश्यक स्क्रिप्ट को गलत क्रम में लोड करता है, इसलिए पूरा पृष्ठ धीरे-धीरे प्रदान करता है, भले ही लगभग सभी संसाधन इन-प्लेस थे।
  • यह पृष्ठ एक ऐसे संसाधन की प्रतीक्षा कर रहा है जो प्रतीक्षा करते समय बस अस्तित्व में नहीं है और बाहर है।
  • एक स्क्रिप्ट धीमे लूप में है जो थोड़ी देर के लिए ब्लॉक हो जाती है
  • एक कैश इंजन एक छवि देने में लंबा समय लेता है
  • आपका CGI किसी डेटाबेस में कुछ देख रहा है, और लुकअप धीमा है
  • आप Google एनालिटिक्स का उपयोग कर रहे हैं , जो पृष्ठ लिखने के तरीके के कारण चीजों को धीमा कर देता है

मैं आगे बढ़ सकता था, लेकिन बिंदु यह है कि पेज को अपने आप को धीमा करने के सटीक कारण के बारे में आपको बताएं। एक त्रुटिपूर्ण नेटवर्क संभव है; यह भी संभव है कि अन्य कारक धीमे प्रदर्शन में योगदान दे रहे हों।

आगे निदान करने के लिए:

  • यदि पृष्ठ फ़ायरफ़ॉक्स में अच्छी तरह से लोड होता है, तो फ़ायरबग में नेटवर्क टैब आपका मित्र है (हिट F12, फिर नेटवर्क टैब पर जाएं और पृष्ठ को पुनः लोड करें)। पेज लोड कैसे होता है और देरी कहां होती है, इसके लिए फायरबग आपको एक अच्छा झरना आरेख देता हैफायरबग झरना
  • यदि Chrome में पृष्ठ अच्छी तरह से लोड होता है, तो आप कुछ ऐसा ही कर सकते हैं (हिट CntlShiftI, नेटवर्क टैब पर क्लिक करें और पृष्ठ को फिर से लोड करें)।क्रोम
  • यदि पृष्ठ केवल IE (btw, आपके HTML डेवलपर्स पर शर्म करता है) में समर्थित है, तो आपका सबसे अच्छा शर्त एएसपी पृष्ठ तत्वों में से प्रत्येक को व्यक्तिगत रूप से लोड करना शुरू करना है curlजब तक कि आपको कुछ ऐसा नहीं लगता है जो बहुत धीमी गति से दिखता है, तो पता लगाएं कि वह विशेष तत्व क्यों है धीमा है।

BTW, क्रोम और फ़ायरफ़ॉक्स उदाहरणों ने Debian.org से CGI क्वेरी का उपयोग किया ; यह एक देरी का एक अच्छा उदाहरण है जो CGI लुकअप से आता है।

जब अन्य सभी विफल हो जाते हैं, तो आप वायरशर्क.pcap से प्राप्त कर सकते हैं और इसे माध्यम से चला सकते हैंtcptrace ; हालांकि, tcptraceपैकेट डंप का विश्लेषण करने में बहुत अच्छा है, लेकिन इस बात की कोई गारंटी नहीं है कि आप tcptraceअकेले इस मुद्दे को अलग कर सकते हैं। निदान का उपयोग करने के बारे में जानकारी के लिए यह उत्तर देखें tcptrace


ऊपर मेरे अपडेट देखें। जबकि आपकी जानकारी सामान्य मामले में बहुत उपयोगी है, मुझे नहीं लगता कि यह यहां लागू होता है। पृष्ठ केवल आंतरायिक रूप से धीमा है, और लक्षण केवल प्रतिलिपि प्रस्तुत करने योग्य हैं जब मैं क्लाइंट साइड पर नेटवर्क को थ्रॉटल करता हूं।
जॉन

फ़ायरफ़ॉक्स / क्रोम सपोर्ट में वॉटरफ़ॉल चार्ट http पोस्ट ऑपरेशंस के साथ-साथ कर्ल ... मुझे यकीन नहीं है कि आपने कैसे निष्कर्ष निकाला है कि इंफॉर्मेशन लागू नहीं होती है, लेकिन ऐसा लगता है कि इसमें प्रॉब्लम डोमेन के खिलाफ टूल्स का पूरा अनुप्रयोग शामिल नहीं है ।
माइक पेनिंगटन

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

मेरे बेल्ट के तहत 15 साल से अधिक के नेटवर्क इंजीनियर के रूप में, मैं सम्मानपूर्वक सुझाव दे सकता हूं कि आप सर्वर से क्लाइंट-साइड HTTP सेवाओं की समस्या का निदान नहीं कर सकते हैं; आपके पास बस पर्याप्त जानकारी नहीं है (जो स्पष्ट रूप से आपका निष्कर्ष भी है ... हालांकि, आप इस वास्तविकता के साथ रहने के लिए खुले नहीं लगते हैं :-)।
माइक पेनिंगटन

यदि सर्वर पर पैकेट कैप्चरिंग नेटवर्क के मुद्दों का निदान कर सकती है (जैसे धीमी टीसीपी देखकर), तो क्या यह उचित नहीं है कि एक लाइट-वेट टूल / लॉगर समान दिखा सके?
जॉन

0

Kb लेख 944884 का अपशॉट यह है कि प्रतिक्रिया को पूरा करने के लिए आवश्यक वास्तविक समय लॉग में सटीक रूप से परिलक्षित नहीं हो सकता है। यही कारण है कि लेख में नेटवर्क समय का उल्लेख है।

यदि लक्षण प्रतिलिपि प्रस्तुत करने योग्य है, तो मैं उस वास्तविक समय को देखने के लिए सर्वर साइड (और अधिमानतः क्लाइंट साइड के साथ) पर एक पैकेट कैप्चर करूंगा जो कनेक्शन क्लाइंट द्वारा स्वीकार किया गया था।


धन्यवाद, लेकिन यह थ्रॉटलिंग नेटवर्क की गति के अलावा अन्य प्रतिलिपि प्रस्तुत करने योग्य नहीं है, और उत्पादन में उपयोग करने के लिए पैकेट कैप्चर बहुत भारी है।
जॉन

0

IIS द्वारा w3wp.exe को पुनरारंभ करने के कारण 20 सेकंड की देरी भी हो सकती है जो अप्रयुक्त होने पर सो जाएगी।


1
आप "कैसे बताएं" का उत्तर देकर इस उत्तर को बेहतर बना सकते हैं। w3wp.exe नींद में जाना मेरे मामले में प्रासंगिक नहीं है क्योंकि मैंने उस व्यवहार को अक्षम कर दिया है, लेकिन यह दूसरों की मदद कर सकता है।
जॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.