SQL सर्वर द्वारा RAM के अत्यधिक उपयोग को कैसे नियंत्रित किया जाए?


13

डेटाबेस सर्वर जो मैं उपयोग कर रहा हूं वह 6 अलग-अलग SQL सर्वर इंस्टेंस चला रहा है। इसमें 48 जीबी रैम है। और उनमें से एक 10 जीबी से अधिक रैम का उपभोग कर रहा है, कुल खपत अब के लिए 20 जीबी है। रैम की खपत लगातार बढ़ रही है। कुछ दिनों पहले यह 40 जीबी से अधिक रैम का उपयोग कर रहा था और सर्वर बहुत धीमी गति से प्रतिक्रिया दे रहा था। डेटा को सहेजते समय एप्लिकेशन क्रैश समस्याओं को दिखाता है।

इसलिए मैंने SQL सर्वर सेवाओं को फिर से शुरू किया।

जैसे ही सेवाओं को फिर से शुरू किया गया, उपयोग 4 जीबी तक कम हो गया, लेकिन अब यह बढ़ रहा है। और मुझे चिंता है कि यह 4 या 5 दिनों में 40 जीबी तक बढ़ जाएगा और सर्वर को धीमा कर देगा।

सेवा पुनरारंभ मुझे लगता है कि अच्छा विकल्प नहीं है।

मैंने विभिन्न स्रोतों से भी पाया कि हम SQL सर्वर के लिए अधिकतम मेमोरी उपयोग आकार सेट कर सकते हैं। और मुझे पूरा यकीन नहीं है कि यह मदद करेगा या नहीं। मैं इसका परीक्षण नहीं कर सकता क्योंकि सर्वर उत्पादन डेटाबेस का उपयोग कर रहा है और यह एक जोखिम होगा यदि SQL सर्वर में सेटिंग को संशोधित करते समय सेवा बंद हो जाती है।

क्या कोई इस समस्या के लिए मदद कर सकता है?


1
डिफ़ॉल्ट रूप से SQL अपने प्रदर्शन को अधिकतम करने के लिए जितना संभव हो उतना रैम का उपयोग करेगा, यह अच्छा है - इसका मतलब है कि यह सामान्य प्रश्नों को कैशिंग कर रहा है और परिणाम आपके आवेदन को तेज बनाता है। यह केवल रैम का उपयोग उस सीमा तक करेगा जिस पर ओएस रिपोर्ट पेजिंग हो सकती है। आप इस व्यवहार को ओवरराइड कर सकते हैं। यह MS दस्तावेज़ीकरण देखें: SQL सर्वर में कॉन्फ़िगरेशन विकल्पों का उपयोग करके मेमोरी उपयोग कैसे समायोजित करें यह भी उपयोगी हो सकता है: उचित SQL सर्वर कॉन्फ़िगरेशन सेटिंग्स का निर्धारण कैसे करें

4
यह एक समस्या नहीं है - यह SQL सर्वर के लिए डिज़ाइन और डिफ़ॉल्ट व्यवहार है !! और हाँ - SQL सर्वर प्रक्रिया को फिर से शुरू करना एक भयानक विचार है ..... SQL सर्वर मेमोरी में बहुत अधिक डेटा और इंडेक्स पेजों को कैश करता है - यह उस तरह से समग्र सिस्टम प्रदर्शन को अनुकूलित कर रहा है। यही कारण है कि SQL सर्वर मशीन को हमेशा एक समर्पित सर्वर होना चाहिए - SQL सर्वर और कुछ नहीं।
marc_s

हां, मुझे यह मिल गया। इसे इस तरह से डिजाइन किया गया है। लेकिन जब sql सर्वर मेमोरी का ज्यादा इस्तेमाल करता है, तो यह सर्वर को धीमा बना देता है और रिपोर्ट को टाइम आउट कर देता है। इसलिए मैं सीमित मेमोरी का उपयोग करने के लिए sql सर्वर को रोकना चाहता हूं।

4
वास्तव में यदि SQL सर्वर जितना हो सके उतना अधिक मेमोरी का उपयोग कर रहा है, तो मैं कहूंगा कि इससे रिपोर्ट देने में कठिनाई होने की संभावना कम होगी। यह तब होता है जब आप SQL सर्वर को कृत्रिम रूप से बाधित करते हैं (या संसाधनों के लिए प्रतिस्पर्धा कर रहे एक बॉक्स पर बहुत सारे उदाहरण डालते हैं) जहां आपको मेमोरी ग्रांट और अन्य मुद्दों के कारण समस्याएं दिखाई देंगी।
हारून बर्ट्रेंड

लेकिन मुझे आश्चर्य है कि इसने अचानक SQLL सर्वर सेवा को पुनरारंभ करने के बाद रिपोर्ट को अच्छी तरह से दिखाना शुरू कर दिया। क्या यह मामला हो सकता है कि बहुत सारे ग्राहक एप्लिकेशन का उपयोग कर रहे थे जिसके कारण रिपोर्ट प्रदर्शित नहीं की गई थीं?

जवाबों:


14

यह डिजाइन द्वारा है। SQL सर्वर सभी उपलब्ध मेमोरी का उपयोग करने वाला है, क्योंकि यह मेमोरी में अधिक से अधिक डेटा स्टोर कर रहा है, ताकि एक ही मेमोरी को बार-बार प्राप्त करने के लिए डिस्क पर वापस जाने की आवश्यकता न हो।

यदि आपको स्मृति की मात्रा को सीमित करने की आवश्यकता है जो एक एकल SQL सर्वर आवृत्ति का उपयोग कर रहा है, तो आप SQL सर्वर प्रबंधन स्टूडियो में ऑब्जेक्ट एक्सप्लोरर के भीतर उदाहरण के नाम पर राइट क्लिक करके और गुणों का चयन करके ऐसा कर सकते हैं। फिर मेमोरी टैब चुनें और मेमोरी की अधिकतम मात्रा सेट करें जिसे SQL सर्वर का उपयोग करने की अनुमति होगी। अब यह SQL सर्वर के सभी पहलुओं को मेमोरी की मात्रा तक सीमित करने वाला नहीं है। यह केवल बफ़र पूल और निष्पादन योजना कैश को नियंत्रित करता है। सीएलआर, फुल टेक्स्ट, एसक्यूएल सर्वर एक्स फाइलों, एसक्यूएल एजेंट, विस्तारित स्टोरेज प्रक्रियाओं आदि द्वारा उपयोग की जाने वाली वास्तविक मेमोरी आदि चीजें इस सेटिंग द्वारा नियंत्रित नहीं की जाती हैं। हालाँकि इन अन्य चीजों को आमतौर पर सभी मेमोरी की आवश्यकता नहीं होती है, यह बफर पूल और निष्पादन योजना कैश है जिसे मेमोरी के थोक की आवश्यकता होती है।

यदि आप इस सेटिंग को एक उदाहरण पर सेट करते हैं, तो आप इसे सभी उदाहरणों पर सेट करना चाहेंगे ताकि वे एक दूसरे पर कदम न रखें।

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