कुछ महीने पहले, मुझे ऐसी ही स्थिति का सामना करना पड़ा जिसमें MAXDOP सेटिंग डिफ़ॉल्ट थी और एक रन दूर क्वेरी ने सभी कार्यकर्ता थ्रेड्स को समाप्त कर दिया।
जैसा कि रेमस ने बताया है कि इसे श्रमिक सूत्र भुखमरी कहा जाता है ।
यह स्थिति उत्पन्न होने पर आपके सर्वर पर एक मेमोरी डंप होगा।
यदि आप 2008R2 + SP1 पर हैं और फिर sys.dm_server_memory_dumpsआपको डंप फ़ाइल स्थान भी देंगे।
अब समस्या पर वापस:
NUMA नोड के अनुसार 1 शेड्यूलर मॉनीटर थ्रेड है और चूंकि आपके पास 2 NUMA नोड्स हैं, इसलिए 2 शेड्यूलर मॉनीटर थ्रेड होंगे, जो सभी शेड्यूलर के स्वास्थ्य की जाँच के लिए ज़िम्मेदार होते हैं, हर 60 सेकंड में उस विशेष NUMA नोड के लिए जाँच करते हुए कि शेड्यूलर अटक गया है या नहीं नहीं।
हर बार जब शेड्यूलर्स वर्कर कतार से एक नया कार्य अनुरोध निकाला जाता है, तो कार्य प्रक्रियाओं का काउंटर बढ़ जाता है। यदि शेड्यूलर के पास कार्य अनुरोध कतारबद्ध है और 60 सेकंड में कार्य अनुरोधों में से एक को संसाधित नहीं करता है, तो शेड्यूलर को माना जाता है।
एक रन-वे क्वेरी या व्यापक समानता के कारण, श्रमिक थ्रेड्स की एक स्थिति उत्पन्न होती है, क्योंकि सभी थ्रेड्स उस एकल-रन क्वेरी या अत्यधिक लंबे अवरुद्ध द्वारा कब्जा कर लिए जाते हैं और जब तक कि अपमानजनक प्रक्रिया को मार नहीं दिया जाता है तब तक कोई काम नहीं किया जा सकता है।
आपकी सबसे अच्छी शर्त है कि आप अपने मैक्स डिग्री ऑफ़ पैरेललिज्म सेटिंग को ट्यून करें । डिफ़ॉल्ट का 0 मतलब है कि SQL सर्वर सभी उपलब्ध सीपीयू का समानांतर प्रसंस्करण के लिए उपयोग कर सकता है और सभी वर्कर थ्रेड्स को समाप्त करके।
कई कारण हैं जो श्रमिक सूत्र की थकावट का कारण बन सकते हैं:
- व्यापक लंबी अवरोधक जंजीरों के कारण SQL सर्वर वर्कर थ्रेड से बाहर निकल जाता है
- व्यापक समानता भी कार्यकर्ता सूत्र की थकावट के लिए अग्रणी
- किसी भी प्रकार के "लॉक" के लिए व्यापक प्रतीक्षा करें - स्पिनलॉक, लैच। एक अनाथ पालक एक उदाहरण है।
यहां मेरे जवाब का संदर्भ लें जो आपको दिखाएगा कि आप अपने सर्वर उदाहरण के लिए MAXDOP मान की गणना कैसे कर सकते हैं।
इसके अलावा, अत्यधिक आपको अपने डेटाबेस सर्वर उदाहरण के बारे में प्रतीक्षा आँकड़े जानकारी एकत्र करना शुरू करने की सलाह देते हैं ।
max degree of parallelismNUMA कॉन्फ़िगरेशन के साथ-साथ आपके पास सर्वर पर वर्तमान में कॉन्फ़िगर किए गए और कितने प्रोसेसर हैं? प्रोसेसर और NUMA कॉन्फ़िगरेशन की संख्या जानने के लिए आप sysinternalscoreinfo.exeसे उपयोग कर सकते हैं ।