MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongodump के लिए CPU और RAM संसाधनों को कैसे सीमित करें?

आपको cgroups का उपयोग करना चाहिए। डिस्ट्रोस और कर्नेल पर माउंट पॉइंट और विवरण अलग हैं। अर्थात। स्टॉक कर्नेल के साथ डेबियन 7.0 डिफ़ॉल्ट रूप से cgroupfs माउंट नहीं करता है और मेमोरी सबसिस्टम अक्षम है (लोग cgroup_enabled=memory के साथ रीबूट करने की सलाह देते हैं) जबकि ओपनएसयूएसई 13.1 बॉक्स से बाहर (ज्यादातर सिस्टमड के कारण) के साथ भेज दिया गया है।

तो सबसे पहले, माउंट पॉइंट बनाएं और cgroupfs माउंट करें यदि अभी तक आपके डिस्ट्रो द्वारा नहीं किया गया है:

mkdir /sys/fs/cgroup/cpu
mount -t cgroup -o cpuacct,cpu cgroup /sys/fs/cgroup/cpu

mkdir /sys/fs/cgroup/memory
mount -t cgroup -o memory cgroup /sys/fs/cgroup/memory

एक समूह बनाएं:

mkdir /sys/fs/cgroup/cpu/shell
mkdir /sys/fs/cgroup/memory/shell

एक सीग्रुप सेट करें। मैंने सीपीयू शेयर में बदलाव करने का फैसला किया है . इसके लिए डिफ़ॉल्ट मान 1024 है, इसलिए इसे 128 पर सेट करना cgroup को सभी CPU संसाधनों के 11% तक सीमित कर देगा, अगर प्रतिस्पर्धी हैं। यदि अभी भी मुक्त सीपीयू संसाधन हैं तो उन्हें मोंगोडम्प को दिया जाएगा। आप cpuset . का भी उपयोग कर सकते हैं इसके लिए उपलब्ध कोर की संख्या को सीमित करने के लिए।

echo 128 > /sys/fs/cgroup/cpu/shell/cpu.shares
echo 50331648 > /sys/fs/cgroup/memory/shell/memory.limit_in_bytes

अब पीआईडी ​​को सीग्रुप में जोड़ें यह उनके सभी बच्चों को भी प्रभावित करेगा।

echo 13065 >  /sys/fs/cgroup/cpu/shell/tasks
echo 13065 >  /sys/fs/cgroup/memory/shell/tasks

मैं कुछ परीक्षण चलाता हूं। मेम का गुच्छा आवंटित करने का प्रयास करने वाले पायथन को OOM द्वारा मार दिया गया था:

[email protected]:~$ python -c 'l = range(3000000)'
Killed

मैंने चार अनंत लूप और cgroup में पांचवां भी चलाया है। जैसा कि अपेक्षित था, cgroup में चलने वाले लूप को CPU समय का केवल 45% मिला, जबकि बाकी को 355% (मेरे पास 4 कोर हैं)।

वे सभी परिवर्तन रीबूट होने से नहीं बचते हैं!

आप इस कोड को एक स्क्रिप्ट में जोड़ सकते हैं जो मोंगोडम्प चलाती है, या कुछ स्थायी समाधान का उपयोग करती है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. लिथियम में विशिष्ट चयन

  2. डीबीआरएफ के साथ मोंगोडब से कैसे पूछें?

  3. मोंगो:डॉट नोटेशन के बिना उप-दस्तावेज़ ढूंढें

  4. अपने MongoDB संस्करण की जाँच करने के 7 तरीके

  5. Neo4j jdbc का उपयोग करते समय नोड ऑब्जेक्ट कैसे प्राप्त करें?