असली कारण आप ऐसा नहीं कर सकते जैसा कि आप पूछते हैं (मेमोरी को सीमित करें) क्योंकि MongoDB सीधे उपयोग की जाने वाली मेमोरी का प्रबंधन नहीं करता है - यह ओएस को ऐसा करने देता है। MongoDB बस मेमोरी अपने सभी डेटा को मैप करता है और फिर आवश्यकतानुसार ओएस पेज को मेमोरी के अंदर और बाहर करता है। नतीजतन, जब तक कि MongoDB इसे पूरी तरह से अलग तरीके से लागू नहीं करता है, तब तक राशि का कोई प्रत्यक्ष प्रबंधन नहीं है, या OS इसे अनुमति देता है (2.4 दिनों के बाद से लिनक्स में संभव नहीं है)।
वर्तमान में संसाधनों को वास्तव में अलग करने का एकमात्र तरीका एक वर्चुअलाइजेशन समाधान का उपयोग करना और अपने स्वयं के वीएम में MongoDB को अलग करना है। हां, इसमें ओवरहेड्स शामिल हैं (हालांकि हाइपरवाइजर्स ने बहुत बेहतर प्राप्त किया है), लेकिन उस समय संसाधन नियंत्रण के उस स्तर के लिए भुगतान की जाने वाली कीमत है।
ओओएम किलर के संदर्भ में, यहां तक कि मेजबान पर कोई अन्य प्रक्रिया नहीं होने तक, जब तक कि आपका डेटा सेट और इंडेक्स समग्र रूप से उपलब्ध मेमोरी से अधिक नहीं हो जाता है, तब तक मोंगोडीबी ओओएम किलर मुद्दों को हिट कर सकता है। इसका कारण यह है कि डेटा को मेमोरी से बाहर कैसे निकाला जाता है - अगर कोई मेमोरी प्रेशर नहीं है (कुछ और नहीं रेजिडेंट मेमोरी चाहते हैं), और आप नए डेटा और इंडेक्स को जोड़ते / छूते रहते हैं, तो अंततः यह सभी उपलब्ध रैम का उपभोग करने के लिए बढ़ेगा। इसलिए MongoDB चलाते समय हमेशा कुछ स्वैप कॉन्फ़िगर करने की सिफारिश:
https://docs.mongodb.com/manual/administration/production-notes/#swap
बेशक, एलआरयू डेटा को पहले बाहर रखा जाएगा, अन्य प्रक्रियाएं रिस मेम भी ले सकती हैं, लेकिन अवधारणा अभी भी लागू होती है जब तक कि आप अपने डेटा को मेमोरी में सेट नहीं करते हैं और तब यह स्थिर रहता है। यदि आप चिंतित हैं तो सबसे अच्छी बात यह है कि इसे एमएमएस में ले लें और समय के साथ उपयोग को ट्रैक करें:
http://mms.mongodb.com
अपडेट: अगस्त २०१५
जब से मैंने यह उत्तर लिखा है कि चीजें कुछ हद तक आगे बढ़ गई हैं और जानकारी थोड़ी पुरानी है। उदाहरण के लिए, लिनक्स में अब cgroups और संबंधित प्रौद्योगिकियां ( उदाहरण के लिए डॉकटर कंटेनर ) हैं जो इस बिंदु पर परिपक्व हो गए हैं कि वे आपको उत्पादन पर्यावरण में किसी भी प्रक्रिया द्वारा खपत संसाधनों ( मेमोरी सहित ) को बेहतर ढंग से अलग करने और सीमित करने की अनुमति देते हैं , यहां तक कि एक का उपयोग करता है स्मृति मानचित्रण MongoDB की तरह।
इसके अतिरिक्त, एमएमएपी से परे नए स्टोरेज इंजन के आगमन के साथ जैसे मोंगोबीडी 3.0 में वायर्डटाइगर आप मोंगोबीडी के लिए कैश आकार को सीमित करने के लिए अंतर्निहित कार्यक्षमता का उपयोग कर सकते हैं । इसलिए, RAM आवश्यकताएँ अब वास्तव में इस बात पर निर्भर करती हैं कि आप MongoDB को कॉन्फ़िगर करने के लिए कैसे चुनते हैं, आप इसे किस वातावरण में चलाते हैं और आप कौन सा संग्रहण इंजन चुनते हैं।