Async_network_io प्रतीक्षा प्रकार क्यों होते हैं?


10

पिछले हफ्ते हमारे डेटाबेस पर कुछ अजीब हुआ। अचानक, हमारे उपयोगकर्ताओं के लिए एप्लिकेशन अवरुद्ध हो गया जो नई संस्थाओं आदि को बचाने में सक्षम नहीं थे। SQL सर्वर की गतिविधि मॉनिटर (2008 संगतता मोड 2005 के साथ) को देखने के बाद मैंने निम्नलिखित तीन प्रविष्टियां देखीं:

async_network_io प्रतीक्षा प्रकार

कुछ समय बाद, उपयोगकर्ताओं को एक कनेक्शन टाइमआउट मिला। जब मैंने प्रक्रिया 64 को मार दिया, तो वे फिर से सामान्य रूप से बचा सकते थे।

समस्या यह है कि ब्लॉक के दौरान जिन संस्थाओं को बचाने की कोशिश की गई थी, उन्हें एक से अधिक बार (3 बार तक) डीबी में डाला गया था, हालांकि कोड है जो इसे होने से रोकना चाहिए (संख्या स्तंभ जो अद्वितीय होना चाहिए, लेकिन बिना किसी बाधा के ... चेक कोड में होता है)।

हम Entity Framework 6.0 का उपयोग करते हैं।

  • क्या आप में से किसी को पता है कि ये ASYNC_NETWORK_IO प्रतीक्षा प्रकार क्यों और कब होते हैं और इनसे कैसे बचा जाए?
  • और वास्तव में उनका क्या मतलब है?

1
डौग लेन के इस लेख पर एक नज़र डालें: brentozar.com/archive/2015/07/… यह ईएफ के साथ आप जो देख रहे हैं उसे संबोधित कर सकते हैं।
क्रिस ग्रुटेमेयर

बहुत ही रोचक लेख! धन्यवाद, मैं इस पर एक नज़र
डालूंगा

1
प्रतीक्षा आँकड़े रिपॉजिटरी की जाँच करें - ASYNC_NETWORK_IO । उस स्क्रिप्ट का उपयोग करें जो पॉल यह देखने के लिए प्रदान करता है कि क्या अन्य समस्याएं हैं।
परिजन शाह

जवाबों:


12

ASYNC_NETWORK_IOकिसी तरह इंगित करता है कि क्लाइंट अनुप्रयोग परिणाम तेजी से संसाधित नहीं कर रहा है क्योंकि SQL सर्वर उन्हें खिलाता है। यह क्लाइंट अनुप्रयोग या सर्वर और क्लाइंट अनुप्रयोग के बीच नेटवर्क कनेक्शन के साथ किसी समस्या के कारण हो सकता है।

कृपया थॉमस ला रॉक की एक पोस्ट देखें

ASYNC_NETWORK_IO प्रतीक्षा इंगित करती है कि दो परिदृश्यों में से एक हो रहा है। पहला परिदृश्य यह है कि परिणाम सेट करने के लिए सत्र (यानी, SPID) क्लाइंट एप्लिकेशन की प्रतीक्षा कर रहा है और SQL सर्वर को वापस सिग्नल भेज रहा है कि वह अधिक डेटा संसाधित करने के लिए तैयार है। दूसरा यह है कि नेटवर्क प्रदर्शन समस्या हो सकती है।

या जो सैक द्वारा यह पोस्ट

जैसा कि आप पहले से ही जानते होंगे, ASYNC_NETWORK_IO (SQL 2005 में देखा गया) और NETWORKIO (SQL 2000 में देखा गया) प्रतीक्षा प्रकार या तो एक कॉलिंग एप्लिकेशन से जुड़े होते हैं जो SQL सर्वर से पर्याप्त रूप से तेज़ी से प्रसंस्करण परिणाम नहीं दे रहा है या नेटवर्क प्रदर्शन समस्या से जुड़ा है। ।

चूँकि आप entity framework ब्रेंट ओजर द्वारा इस पोस्ट का उपयोग कर रहे हैं इसलिए यह उपयोगी भी हो सकता है

इन प्रश्नों के प्रतीक्षा आंकड़ों को देखते हुए, मैंने देखा कि बहुत से ASYNC_NETWORK_IO थे - अक्सर 1000+ मिलीसेकंड। यह भी कोई मतलब नहीं था! इतने कम CPU समय और इतनी कम पढ़ी जाने वाली क्वेरी को पूरा होने में कितना समय लग सकता है? ऐसा नहीं है कि आवेदन लाखों पंक्तियों के लिए पूछ रहा था और परिणाम तेजी से पर्याप्त उपभोग नहीं कर सका।


6

ASYNC_NETWORK_IO प्रतीक्षा प्रकार के बारे में कुछ गलत धारणाएं हैं, मुख्य रूप से नाम के कारण जो नेटवर्क समस्या को इंगित करता है, लेकिन यह इस प्रतीक्षा प्रकार के लिए काफी दुर्लभ है।

अत्यधिक ASYNC_NETWORK_IO प्रतीक्षा दो परिदृश्यों में हो सकती है:

  1. SQL सर्वर से प्राप्त डेटा को संसाधित करने के लिए सत्र को प्रतीक्षा करनी चाहिए ताकि SQL सर्वर को सिग्नल भेजा जा सके कि वह प्रसंस्करण के लिए नए डेटा को स्वीकार कर सके। यह एक सामान्य परिदृश्य है जो खराब एप्लिकेशन डिज़ाइन को प्रतिबिंबित कर सकता है, और यह अक्सर ASYNC_NETWORK_IO प्रतीक्षा प्रकार मानों की अधिकता का कारण होता है।

    इसमें उस एप्लिकेशन की जांच करना शामिल है जो ASYNC_NETWORK_IO प्रतीक्षा प्रकार के मूल्यों का कारण बन रहा है और अक्सर इसे बनाने वाले एप्लिकेशन डेवलपर्स के साथ समन्वय किया जाता है।

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

इस पृष्ठ पर बहुत अधिक विवरण मिल सकते हैं

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