हमें हाल ही में हमारे SQL सर्वर 2014 HADR पर्यावरण पर एक समस्या थी, जहां सर्वर में से एक कार्यकर्ता थ्रेड से बाहर चला गया था।
हमें संदेश मिला:
ऑल्वेज़ऑन उपलब्धता समूहों के लिए थ्रेड पूल एक नया वर्कर थ्रेड शुरू करने में असमर्थ था क्योंकि पर्याप्त एविएबल वर्कर थ्रेड नहीं हैं।
मैंने पहले से ही एक और प्रश्न खोला, एक बयान प्राप्त करने के लिए जिसे (मुझे लगा) मुझे समस्या का विश्लेषण करने में मदद करनी चाहिए ( क्या यह देखना संभव है कि कौन सा एसपीआईडी किस अनुसूचक (कार्यकर्ता धागा) का उपयोग करता है? )। हालाँकि मेरे पास अब उन थ्रेडों को खोजने के लिए क्वेरी है जो सिस्टम का उपयोग कर रहे हैं, मुझे समझ नहीं आता है कि सर्वर थ्रेड से बाहर क्यों भाग गया।
हमारा पर्यावरण इस प्रकार है:
- 4 विंडोज सर्वर 2012 आर 2
- SQL सर्वर 2014 एंटरप्राइज़
- 24 प्रोसेसर -> 832 श्रमिक सूत्र
- 256 जीबी राम
- 12 उपलब्धता समूह (समग्र)
- 642 डेटाबेस (समग्र)
तो, जिस सर्वर में समस्या थी, उसमें निम्न कॉन्फ़िगरेशन था:
- 5 उपलब्धता समूह (3 प्राथमिक / 2 माध्यमिक)
- 325 डेटाबेस (127 प्राथमिक / 198 माध्यमिक)
MAXDOP = 8
Cost Threshold for Parallelism = 50
- पावर प्लान "उच्च प्रदर्शन" के लिए सेट है
समस्या को "हल" करने के लिए हमने द्वितीयक सर्वर पर एक उपलब्धता समूह को मैन्युअल रूप से विफल कर दिया। उस सर्वर का विन्यास अब है:
- 5 उपलब्धता समूह (2 प्राथमिक / 3 माध्यमिक)
- 325 डेटाबेस (77 प्राथमिक / 248 माध्यमिक)
मैं इस कथन के साथ उपलब्ध थ्रेड्स की निगरानी कर रहा हूँ:
declare @max int
select @max = max_workers_count from sys.dm_os_sys_info
select
@max as 'TotalThreads',
sum(active_Workers_count) as 'CurrentThreads',
@max - sum(active_Workers_count) as 'AvailableThreads',
sum(runnable_tasks_count) as 'WorkersWaitingForCpu',
sum(work_queue_count) as 'RequestWaitingForThreads' ,
sum(current_workers_count) as 'AssociatedWorkers'
from
sys.dm_os_Schedulers where status='VISIBLE ONLINE'
आम तौर पर सर्वर में लगभग 250 - 430 श्रमिक सूत्र उपलब्ध होते हैं, लेकिन जब समस्या शुरू हुई तो कोई भी श्रमिक नहीं बचा था।
आज, कहीं से भी, उपलब्ध श्रमिक 327 से घटकर 50 हो गए, लेकिन केवल एक मिनट के लिए और फिर लगभग 400 तक वापस चले गए।
मैंने पहले से ही अन्य प्रश्न ( HADR उच्च कार्यकर्ता धागा उपयोग ) देखा था, लेकिन यह मेरी मदद नहीं करता है।
हमारा सिस्टम बिना किसी समस्या के एक साल से अधिक समय तक स्थिर रहा। हमने डेटाबेस के वितरण में कोई भी विफलता या अन्य बड़ा बदलाव नहीं किया है।
हम प्रतिकृतियों के बीच "सिंक्रोनस कमिट" का उपयोग कर रहे हैं। मेरी समझ से इसमें कोई संपीड़न शामिल नहीं है, प्रलेखन में उपलब्धता समूह के लिए ट्यून संपीड़न देखें ।
क्या किसी को भी इस बात का अंदाजा है कि सभी वर्कर थ्रेड का उपयोग क्या कर रहे हैं?
संपादित करें: यह पृष्ठ मिला जहाँ उन मुद्दों के बारे में बहुत सी जानकारी है http://www.techdevops.com/Article.aspx?ID=24