पता करें कि नेटवर्क ट्रैफ़िक की सबसे बड़ी मात्रा के कारण कौन से क्वेरीज़ हैं


23

उत्पादन SQL सर्वर पर मैं डेटा ट्रैफ़िक में आंतरायिक विशाल स्पाइक्स देख रहा हूँ। 200Mbit / s तक जो NETWORK IO प्रतीक्षा कर रहा है जो बदले में क्वेरी टाइमआउट का कारण बनता है। मैं कैसे पता लगा सकता हूं कि बड़े परिणाम सेट पर कौन से प्रश्न वापस आ रहे हैं?

जवाबों:


18

आप इसे DMV s से पा सकते हैं :

SELECT session_id, num_writes, st.text AS statement_text
FROM sys.dm_exec_connections AS ec
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS st
ORDER BY num_writes DESC

ट्रेसिंग के विपरीत यह एक प्रोडक्शन सर्वर पर चलने के लिए पूरी तरह से सुरक्षित होना चाहिए।


7

मैं SQL Profiler का उपयोग करते हुए उत्पादन डेटा का एक ट्रेस लेता हूं और मैं उन कोड / बैचों को इकट्ठा करता हूं जिनमें सबसे बड़ा रीड और राइट होता है। केवल प्रक्रियाओं और बैचों को प्राप्त करने के लिए ट्रेस को फ़िल्टर करें जो कि रीड / राइट में उच्च हैं। एक नमूना चुनें जो आपकी आंख पर फिट बैठता है: मान लीजिए कि 1 मिलियन से अधिक पढ़े या लिखे गए हैं।

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

डेटा को दर्शाए बिना उत्पादन डीबी पर चलने योग्य नहीं है !!! सबसे अधिक संभव फ़िल्टर करें (db, होस्ट नाम, जिसे आप कभी मानते हैं) और उसके बाद ही ट्रेस शुरू करें। :-) के बाद प्रोफाइलर को बंद करना न भूलें।

पुनश्च: मुझे एक और अच्छा विकल्प याद आया: एक अवधि के लिए ट्रेस के साथ, आपको Perfmon (केवल IO params चुना) का उपयोग करके डेटा को सहेजना चाहिए। Profiler में ट्रेस फ़ाइल और परफ़ॉर्म डेटा फ़ाइल को एक साथ आयात करने की एक अच्छी सुविधा है। और आप वहां देख सकते हैं जब आपके पास सबसे बड़ा आईओ स्पाइक्स है।

PS2: मैं मानता हूं कि गयुस का विकल्प अधिक सुरुचिपूर्ण है। लेकिन मैं पोस्टर के लिए अपना भारी जवाब छोड़ देता हूं! :-)


5

यदि आपने अभी तक इस पर ध्यान नहीं दिया है, तो आप एडम मैकहानिक के sp_WhoIsActive को देखना चाहेंगे। उन्होंने हाल ही में ब्लॉग पोस्टों की एक श्रृंखला की जिसमें विभिन्न विशेषताओं को समझाया गया है जो कि sp_WhoIsActive में बनाए गए हैं, जिनमें से एक @delta_interval है।

न केवल यह दिखाएगा कि आप सबसे अधिक सीपीयू या I / O क्या ले रहे हैं, बल्कि यह आपको यह भी दिखा सकता है कि अभी सबसे CPU या I / O क्या ले रहा है।

इस सुविधा की पूरी व्याख्या के लिए निम्नलिखित ब्लॉग श्रृंखला देखें:

http://whoisactive.com/docs/01_background/

निम्न ब्लॉग पोस्ट बताती है कि sp_WhoIsActive के आउटपुट को कैसे सॉर्ट करना है और कौन से कॉलम को प्रदर्शित करना है:

http://whoisactive.com/docs/24_output/

यह निम्नलिखित अपडेट लिंक पर उपलब्ध कई पोस्टों में से एक है जो उसने सेटअप की है।

http://whoisactive.com

संस्करण 11.0 इस उत्तर के समय के रूप में उपलब्ध है, इसलिए यदि आप एक पुराने संस्करण का उपयोग कर रहे हैं तो इसे अपग्रेड करने का समय हो सकता है: डी

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