SQL सर्वर 2005: इस क्वेरी को चलाने के लिए अपर्याप्त सिस्टम मेमोरी है


13

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

इवेंट आईडी: 701

विवरण: इस क्वेरी को चलाने के लिए अपर्याप्त सिस्टम मेमोरी है।

हमारी टीम जो इस सर्वर का प्रबंधन करती है, ज्यादातर डेवलपर्स से बनी है जो कि sysadmin कर्तव्यों को दोहराते हैं। हालांकि, हमारी प्राथमिक विशेषज्ञता विकास है। यह कहा जा रहा है, हम इस बात पर नुकसान में हैं कि हम इस समस्या निवारण के बारे में कैसे जाते हैं। हम फ़ोरम और व्हाट्सएप कर रहे हैं और ऐसा कुछ भी नहीं मिला है जो मेल खाता हो

तो, समस्या निवारण में सहायता के लिए यहां कुछ और विवरण दिए गए हैं:

  • हमारी न्यूनतम सर्वर मेमोरी 0 पर सेट है।
  • हमारी अधिकतम सर्वर मेमोरी 2000 पर सेट है।
  • कुल भौतिक मेमोरी 3,325.85 एमबी (sysinfo से) है।
  • टोटल वर्चुअल मेमोरी 7.10 जीबी (sysinfo से) है।
  • हम स्मृति को आवंटित करने के लिए AWE का उपयोग नहीं कर रहे थे, लेकिन अब हम देख रहे हैं कि क्या इससे कोई फर्क पड़ता है।
  • यह त्रुटि एक नौकरी द्वारा फेंकी गई थी जो एक लेनदेन लॉग का बैकअप ले रही थी, एक क्वेरी नहीं चला रही थी।
  • हमारे पास कई लिंक्ड सर्वर हैं। दूसरी तरफ RDBMS के प्रकार SQL Server (2005 और 2000), Oracle 10g और OSI PI सिस्टम हैं।
  • यह इस बिंदु पर आंतरायिक है। हम त्रुटियों के लिए किसी भी समय या घटना को सहसंबंधित नहीं कर सकते।
  • बेशक, रिबूटिंग कुछ समय के लिए इसे दूर करने के लिए लगता है, जो त्रुटि संदेश की प्रकृति के कारण समझ में आता है।
  • यह सर्वर एक एप्लिकेशन सर्वर (विंडोज़ सेवाओं के एक जोड़े) और एक वेब सर्वर के साथ-साथ डेटाबेस सर्वर के रूप में भी जुड़ जाता है।

संपादित करें:

हम एसपी 3 पर हैं। हमारे द्वारा पाए गए अधिकांश पोस्ट पूर्व SP1 थे, जो हमारे लिए लागू नहीं होते हैं।

SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

रिटर्न

9.00.4035.00 SP3 मानक संस्करण


क्या आप SQL सर्वर त्रुटि लॉग की समीक्षा कर सकते हैं क्योंकि इस त्रुटि के बारे में अतिरिक्त विवरण हो सकता है।
जॉन सैंसोम

जवाबों:


4

मैं -g स्टार्टअप पैरामीटर का भी उपयोग करने का सुझाव दूंगा। यह ज्यादातर लोगों के लिए काम करने लगता है और शायद आपके लिए भी काम करेगा। मेरी एकमात्र चिंता यह होगी कि अंतर्निहित समस्या का समाधान नहीं हो सकता है। उदाहरण के लिए, यदि किसी लिंक किए गए सर्वर के कारण मेमोरी लीक है, और MTL को 512Mb तक बढ़ा दिया जाता है, तो क्या यह मेमोरी मुद्दों के बीच एक लंबी अवधि होगी? मुझे इसका उत्तर नहीं पता है, लेकिन मैं अंडरटेहॉल्ड से सहमत हूं कि एक परफ़ॉर्म एक अच्छी शुरुआत हो सकती है।


7

त्रुटि संदेश "इस क्वेरी को चलाने के लिए अपर्याप्त सिस्टम मेमोरी है।" वर्चुअल एड्रेस स्पेस (वीएएस) अनुपलब्ध है और पारंपरिक अर्थों में मेमोरी नहीं है अर्थात SQL सर्वर प्रोसेस स्पेस में।

यह देखते हुए कि आप केवल इस सर्वर पर 3GB के साथ चल रहे हैं और SQL सर्वर को 2GB तक असाइन किया गया है, इसका मतलब है कि OS और अधिक महत्वपूर्ण बात यह है कि बॉक्स पर किसी भी चीज के साथ खेलने के लिए 1GB से कम है। यह बहुत सारी मेमोरी नहीं है।

यदि यह समस्या वास्तव में स्मृति रिसाव के परिणाम के रूप में है, तो यह SQL सर्वर प्रक्रिया स्थान (memToLeave) के बाहर VAS है जिसका उपभोग किया जा रहा है।

मैं मी-टूलेव भाग में अधिक मेमोरी असाइन करने के लिए -g स्टार्टअप पैरामीटर का उपयोग करने का सुझाव दूंगा।

अधिक जानकारी के लिए निम्नलिखित लेख देखें:

http://www.johnsansom.com/sql-server-memory-configuration-determining-memtoleave-settings/

आप SQL सर्वर की अधिकतम मेमोरी सेटिंग को कम करना चाह सकते हैं, लेकिन मैं इसे अंतिम उपाय के रूप में करना चाहूंगा।


अच्छा लेख। यह भी संलेखन के लिए धन्यवाद! हमारे पास हमारे SQL लॉग में कई AppDomains अनलोडिंग हैं। हमारे पास केवल 2 सीएलआर संग्रहीत प्रक्रियाएं हैं, और वे मूल रूप से बस प्राप्त करते हैं और वेब सेवा से / के लिए डेटा डालते हैं। यह अजीब लगता है कि ये 2 सीएलआर संग्रहीत प्रक्रियाएं बॉक्स से बहुत अधिक वीएएस का उपयोग कर रही होंगी।
आरोन डेनियल 14

आपका स्वागत है। जैसा कि आप जानते हैं, मेमॉलेव के लिए डिफ़ॉल्ट आवंटन केवल 256MB है। यह आपके AppDomains, सभी CLR / प्रबंधित कोड, लिंक्ड सर्वर क्वेरी, SSIS आदि के लिए काफी छोटा सैंडबॉक्स है, खासकर यदि आप सर्वर पर सभी उपलब्ध मेमोरी का उपयोग कर रहे हैं। मैं -g स्टार्टअप पैरामीटर का उपयोग करके इसे 512MB तक दोगुना करने का सुझाव दूंगा।
जॉन सैंसोम

1

इस फ़ोरम थ्रेड के अनुसार , यह किसी लिंक किए गए सर्वर ड्राइवर की मेमोरी लीक से संबंधित हो सकता है :

Microsoft ने हमें निम्नलिखित बातें बताई हैं।

एक लिंक किए गए सर्वर का उपयोग करके डेटा को संसाधित करना विशिष्ट रूप से लोमड़ी समर्थक चालक स्मृति रिसाव का कारण बनता है जो समय के साथ बनता है।


0

यह सर्वर एक एप्लिकेशन सर्वर (विंडोज़ सेवाओं के एक जोड़े) और एक वेब सर्वर के साथ-साथ डेटाबेस सर्वर के रूप में भी जुड़ जाता है।

मैं आपकी न्यूनतम मेमोरी सेट करूँगा - यह बहुत संभव है कि ये अन्य प्रक्रिया SQL से मेमोरी "चोरी" कर रहे हों

आप इस बात की पुष्टि करने और / या वास्तविक समस्या क्या है की पहचान करने के लिए अपने आप को और अधिक जानकारी देने के लिए perfmon का उपयोग करके एक काउंटर लॉग चला सकते हैं।


0

इस ब्लॉग से लिया गया संदर्भ!

इस समस्या को हल करने के लिए अलग-अलग विकल्प हैं।

सबसे पहले, "न्यूनतम सर्वर मेमोरी" और "अधिकतम सर्वर मेमोरी" के लिए अपनी SQL सर्वर सेटिंग की जाँच करें। यदि आपको दोनों मानों में बहुत कम अंतर मिला है, तो अपनी "अधिकतम सर्वर मेमोरी" बढ़ाएं।

दूसरा, इसकी मेमोरी उपयोग की जानकारी के साथ लंबे समय तक चलने वाले प्रश्नों का पता लगाएं और यदि यह क्वेरी निष्क्रिय अवस्था में है, तो कृपया इस प्रक्रिया को सत्यापित और मार दें। डेटाबेस प्रदर्शन अनुकूलन मेमोरी usages के लिए एक प्रमुख बात है।

तीसरा, पाया गया कि लंबे समय तक चलने वाले प्रश्नों के लिए अनुक्रमणिका का उपयोग किया जाता है क्योंकि आपके सिस्टम के अनुक्रमणिका को ठीक किए बिना DIS / I में वृद्धि होती है और इसका सीधा असर आपकी मेमोरी पर पड़ता है।

चौथा, वर्चुअल मेमोरी पेजिंग फ़ाइल का आकार जांचें और इस फ़ाइल का आकार बढ़ाएँ।

पांचवां, "क्वेरी प्रति मिनट मेमोरी" के आकार की जांच करें वास्तव में यह डिफ़ॉल्ट रूप से 1024 KB है लेकिन दुर्लभ स्थितियों में आप इस पैरामीटर के आकार को कम कर सकते हैं। वास्तव में, यह उचित नहीं है, लेकिन आप इसे आज़मा सकते हैं।

छठा, इस DBCC कमांड को निष्पादित करने का प्रयास करें और फिर से यह उचित नहीं है क्योंकि यह सर्वर के समग्र प्रदर्शन को प्रभावित कर सकता है। लेकिन आप यह कोशिश कर सकते हैं।

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