एक अच्छे MongoDB होस्टिंग अनुभव के लिए MongoDB मेमोरी उपयोग को समझना महत्वपूर्ण है। सर्वश्रेष्ठ प्रदर्शन के लिए, अपने वर्किंग सेट को इन-मेमोरी रखना अनिवार्य है। मैंने कुछ सुझाव देखे हैं कि यदि आप सॉलिड-स्टेट ड्राइव (SSD) का उपयोग करते हैं, तो यह मेमोरी को कम महत्वपूर्ण बना देता है। डायनेमिक रैंडम-एक्सेस मेमोरी (डीआरएएम) एक्सेस टाइम नैनोसेकंड के क्रम का है, एसएसडी एक्सेस टाइम माइक्रोसेकंड के क्रम का है, और हार्ड डिस्क एक्सेस टाइम मिलीसेकंड के क्रम का है - इसलिए एसएसडी के पास अभी भी पकड़ने के लिए जाने का एक तरीका है स्मृति के साथ।
MongoDB डेटाबेस को मेमोरी में मैप करने के लिए मेमोरी मैप्ड फाइल्स (MMF) का उपयोग करता है। डेटा को समय-समय पर डिस्क में प्रवाहित किया जाता है (जाहिर है कि तंत्र बहुत अधिक जटिल है, लेकिन यह किसी अन्य पोस्ट के लिए एक विषय है)।
एक बार जब आपका MongoDB सर्वर चालू और चालू हो जाता है, तो मेमोरी के उपयोग की निगरानी करना और उसे समझना महत्वपूर्ण है। हमारे MongoDB सर्वर की निगरानी के लिए, आप अपने प्रदर्शन पर विस्तृत मीट्रिक देखने के लिए स्केलग्रिड MongoDB मॉनिटरिंग कंसोल का उपयोग कर सकते हैं। कुछ नमूना कार्यभार चलाएं और एक आधार रेखा स्थापित करें ताकि आप समझ सकें कि कब कुछ सामान्य रूप से प्रदर्शन नहीं कर रहा है। यहां चार महत्वपूर्ण काउंटर दिए गए हैं जो आपके MongoDB मेमोरी उपयोग की निगरानी करने में आपकी सहायता करेंगे:
-
स्मृति
यह वास्तव में एक ग्राफ़ में तीन काउंटर हैं:
-
निवासी स्मृति
यह MongoDB प्रक्रिया द्वारा उपयोग की जा रही भौतिक मेमोरी की वास्तविक मात्रा है।
-
मेमोरी मैप की गई
यह आपके डेटाबेस को मेमोरी में मैप करने के लिए MongoDB प्रगति द्वारा उपयोग की जाने वाली वर्चुअल मेमोरी की मात्रा है। यह आमतौर पर आपके डेटाबेस के आकार का होगा।
-
वर्चुअल मेमोरी
इसमें संपूर्ण MongoDB प्रक्रिया के लिए वर्चुअल मेमोरी शामिल है। यदि आपने जर्नलिंग चालू कर रखी है, तो यह आम तौर पर आपकी मैप की गई मेमोरी के आकार का दोगुना होगा।
-
-
नॉन-मैप्ड वर्चुअल मेमोरी
यह वर्चुअल मेमोरी की मात्रा है जिसका उपयोग बहीखाता पद्धति डेटा के लिए किया जाता है न कि डेटा फ़ाइलों को मैप करने के लिए। उदाहरण के लिए, प्रत्येक कनेक्शन एक निश्चित मात्रा में मेमोरी का उपभोग करता है। आमतौर पर यह काउंटर काफी कम होना चाहिए - आमतौर पर 1GB से कम।
-
पेज दोष
यह हार्ड पेज फॉल्ट/सेकंड की संख्या है। जाहिर है आप चाहते हैं कि यह संख्या यथासंभव कम हो।
-
हार्ड पेज फॉल्ट
यह तब ट्रिगर होता है जब विचाराधीन पृष्ठ भौतिक स्मृति में नहीं होता है और उसे डिस्क से लाने की आवश्यकता होती है।
-
सॉफ्ट पेज फॉल्ट
यह तब होता है जब पृष्ठ कहीं और स्मृति में रहता है या एक संक्रमणकालीन स्थिति में है।
-
-
B-tree (इंडेक्स मिस)
एक इंडेक्स मिस दो बार अक्षम है, क्योंकि यह दो डिस्क रीड का कारण बनता है, एक इंडेक्स एंट्री को पढ़ने के लिए और दूसरा दस्तावेज़ को पढ़ने के लिए। बी-ट्री काउंटर इंडेक्स मिस की संख्या को ट्रैक करता है। यह एक और जगह है जहां आप किसी भी असामान्य पैटर्न को खोजने के लिए आधार रेखा स्थापित करना चाहेंगे। अपने सामान्य प्रश्नों के लिए क्वेरी योजनाओं की जांच के लिए .explain() कमांड का उपयोग करें।
MongoDB में मेमोरी मैनेजमेंट का एक और महत्वपूर्ण पहलू है अपने 'वर्किंग सेट' को समझना। हमारी अगली पोस्ट में, हम जांच करेंगे कि आपके डेटाबेस के लिए वर्किंग सेट कैसे निर्धारित किया जाए।