MongoDB सभी उपलब्ध रैम का उपयोग नहीं कर रहा है


9

मेरे पास मूंगो क्लस्टर में संग्रहीत लगभग 200 जीबी डेटा है। मोंगियो को चलाने वाले एक उदाहरण पर भौतिक मेमोरी 8GB है। इस परिणाम पर किसी और परिणाम के अलावा कुछ नहीं चलता है। पास के रूप में मैं मानगो के डॉक्स के आधार पर समझ सकता हूं (जैसे कि यह एक: http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage ) इसका मतलब यह है कि मानगोड को लगभग 100% का उपयोग करना चाहिए उपलब्ध भौतिक स्मृति। लेकिन यदि आप topकमांड से निम्न आउटपुट को देखते हैं, तो आप देखेंगे कि मोनगोड का उदाहरण केवल 2GB की निवासी मेमोरी का उपयोग कर रहा है और इसमें पूर्ण 2GB की मुफ्त भौतिक मेमोरी उपलब्ध है जिसका उपयोग बिल्कुल भी नहीं किया जा रहा है।

क्या कोई मुझे इस व्यवहार की व्याख्या कर सकता है? 2GB फ्री मेमोरी क्यों है?

top उत्पादन:

top - 23:19:43 up 89 days, 20:05,  2 users,  load average: 0.41, 0.55, 0.59
Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.0%us,  1.3%sy,  0.0%ni, 93.9%id,  2.6%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8163664k total,  6131764k used,  2031900k free,    54976k buffers
Swap: 16771848k total,    10604k used, 16761244k free,  5367700k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                             
 1401 mongodb   20   0  174g 2.0g 1.9g S   23 26.2  18070:55 mongod
 ...

व्यवस्था की सूचना:

$ uname -a
Linux aluminum 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux

टिप्पणियाँ:

  • इस क्लस्टर में एक और उदाहरण है जहां मैंगोड व्यवहार कर रहा है जैसा कि मैं उम्मीद करूंगा और सभी उपलब्ध मेमोरी का उपयोग करूंगा।
  • Mongostat ऐसा लगातार कुछ पेज-दोषयुक्त है, तो स्मृति के लिए प्रयोग किया जाता राशि कर रहे थे लग रहा है को देखते हुए किया जाना चाहिए बढ़ रही है:
  • (मैंने यही सवाल mongodb-user google group पर पूछा लेकिन कोई प्रतिक्रिया नहीं मिली।)

लिनक्स क्या है? यह 32 या 64-बिट है? ( कृपया अपने प्रश्न को आउटपुट lsb-release -aऔर uname -aकृपया के साथ संपादित करें )
Phil

धन्यवाद। जोड़ा गया, unameलेकिन मैंने lsb-releaseस्थापित नहीं किया है।
क्रिस डब्ल्यू।

क्या आपने गलती से MongoDB का 32-बिट संस्करण डाउनलोड कर लिया था? 32-बिट मोंगो उदाहरण का अधिकतम आकार 2GB है।
हारून

@ BryceAtNetwork23 nope; हम निश्चित रूप से हमारे mongodb कुल (वास्तव में कई सौ gigs) में 2GB से अधिक है।
क्रिस डब्ल्यू।

@ क्रिस उसका मतलब है अधिकतम मेमोरी साइज़ - डेटाबेस साइज़ नहीं। और ऐसा लगता है कि यह 2GB को अच्छी तरह से समझाएगा।
रफुस्का

जवाबों:


5

निवासी मेमोरी आकार वास्तव में mongodप्रक्रिया द्वारा छुआ स्मृति में पृष्ठों की संख्या का प्रतिनिधित्व करता है। यदि यह उपलब्ध मेमोरी से काफी कम है और डेटा उपलब्ध मेमोरी (आपका करता है) से अधिक है, तो यह अभी तक सक्रिय रूप से पर्याप्त पृष्ठों को नहीं छूने का मामला हो सकता है।

यह निर्धारित करने के लिए कि क्या यह मामला है, आपको चलना चाहिए free -m, आउटपुट कुछ इस तरह दिखना चाहिए:

free -m
             total       used       free     shared    buffers     cached
Mem:          3709       3484        224          0         84       2412
-/+ buffers/cache:        987       2721
Swap:         3836        156       3680

मेरे उदाहरण में, कैश्ड कुल के करीब नहीं है, जिसका अर्थ है कि केवल मोंगॉड ने पर्याप्त पृष्ठों को नहीं छुआ है, फाइलसिस्टम कैश अभी तक सामान्य रूप से डिस्क से पढ़े जा रहे पृष्ठों द्वारा भरा नहीं गया है।

इसके लिए एक त्वरित उपाय स्पर्श कमांड होगा (2.2 में जोड़ा गया) - इसका उपयोग बड़े डेटा सेटों पर सावधानी के साथ किया जाना चाहिए क्योंकि यह सब कुछ रैम में लोड करने का प्रयास करेगा, भले ही डेटा फिट करने के लिए बहुत बड़ा हो (बहुत सारे कारण) डिस्क IO और पृष्ठ दोष)। यह निश्चित रूप से स्मृति को प्रभावी ढंग से भर देगा हालांकि :)

यदि आपका कैश्ड मान कुल उपलब्ध के करीब है, तो आपका मुद्दा यह है कि डिस्क से मेमोरी में पढ़े जा रहे पेजों की एक बड़ी संख्या मोंगॉड प्रक्रिया के लिए प्रासंगिक नहीं है (और इसलिए इसे छुआ नहीं गया)। इस तरह की विसंगति के लिए सामान्य उम्मीदवार रीडहेड है। मैं पहले से ही है कि विशेष रूप से कवर किया गया है विषय कहीं और , विस्तार से तो मैं बस भविष्य पढ़ने के लिए उन दो जवाब से लिंक कर देंगे यदि आवश्यक हो तो।

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