मोंगोडब से पारदर्शी_हुगेपेज / डीफ़्रैग चेतावनी से कैसे बचें?


96

मैं टीएचपी के बारे में मंगोलोड से निम्नलिखित चेतावनी प्राप्त कर रहा हूं

2015-03-06T21:01:15.526-0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-03-06T21:01:15.526-0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'

लेकिन मैंने THP को मैन्युअल रूप से बंद करने का प्रबंधन किया

frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

मैं जोड़कर चाल किया था transparent_hugepage=neverकरने के लिए GRUB_CMDLINE_LINUX_DEFAULTमें /etc/default/grubऔर जोड़ने

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

सेवा /etc/rc.local

पृथ्वी पर मैं चेतावनी से कैसे बच सकता हूं?


2
मेरे पास एक ही मुद्दा था, लेकिन मैंगोड सहित सब कुछ रिबूट करना भूल गया। मुझे पता है कि यह एक बेवकूफी भरा सवाल हो सकता है, लेकिन क्या आपने सब कुछ रिबूट किया है?
Skooppa.com

1
प्रतीक्षा करें ... आपका मतलब था मोंगोड सेवा पुनः आरंभ करना? ओह ... मैं भाग गया sudo service mongod restartऔर चेतावनी बस चली गई! धन्यवाद! यह अजीब है, मैं सिर्फ वीएम को क्यों नहीं रिबूट कर सकता हूं?
फ्रेडरिक झांग

1
यकीन नहीं है कि यह रिबूट पर क्यों नहीं पकड़ पाया। लेकिन हाँ, मेरा मतलब था कि डेमॉन को फिर से शुरू करना। खुशी है कि यह काम कर रहा है।
Skooppa.com

7
यह कोई हल नहीं है। रीबूट के बाद इस चेतावनी को देखने का कारण यह है कि आपके rc.local निष्पादित होने से पहले मोंगो डेमन शुरू हो जाता है। सिस्टम बूट के बाद डेमन को फिर से शुरू करना समस्या को हल करता है, लेकिन अगली बार जब आप अपने वीएम को रिबूट करते हैं तो आप उस अच्छी चेतावनी को फिर से देखेंगे। Unfortunatelly मैं आपको समाधान नहीं दे सकता क्योंकि मैं अभी भी इसे खोज रहा हूं।
SileNT

1
@ फ्रेडरिक888 भले ही आप वीएम को रिबूट करें? सेवा को पुनरारंभ करना चेतावनी को अस्थायी रूप से हल करता है। अधिक जानकारी के लिए इस मुद्दे की जाँच करें: jira.mongodb.org/browse/SERVER-17418
SileNT

जवाबों:


161

आधिकारिक MongoDB प्रलेखन इस मुद्दे के लिए कई समाधान देता है। आप इस समाधान को भी आजमा सकते हैं , जो मेरे लिए काम आया:

नोट: मानगो प्रलेखन संस्करण 3.0 से अधिक है, तो आधिकारिक प्रलेखन निर्देशों का प्रयास करें

  1. /etc/init.d/mongodफ़ाइल खोलें ।
    (यदि ऐसी कोई फ़ाइल जो आप जाँच सकते हैं /etc/init.d/mongod, /etc/init/mongod.confफ़ाइलें - क्रेडिट: नीचे टिप्पणी)

  2. chown $DAEMONUSER /var/run/mongodb.pidपहले और बाद में नीचे की पंक्तियों को जोड़ें end script

  3. पुनः आरंभ mongod( service mongod restart)।

यहाँ जोड़ने के लिए लाइनें हैं /etc/init.d/mongod:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

बस!


क्षमा करें कि मैंने आपका उत्तर तुरंत स्वीकार नहीं किया। मैं उन पंक्तियों पर टिप्पणी करता हूं, जिन्हें मैंने rc.local में जोड़ा और आपके समाधान की कोशिश की, और इसने मेरे लिए भी काम किया। धन्यवाद!
फ्रेडरिक झांग

6
अच्छी तरह से, मुझे एक /etc/init/mongod.conf फ़ाइल नहीं मिली, लेकिन मैंने उन पंक्तियों को /etc/init.d/mongod स्क्रिप्ट फ़ाइल में जोड़ा, जो कि "प्रारंभ ..." पंक्ति से ठीक पहले, और यह मेरे लिए काम करता है
सगई मान

2
भयानक समाधान! उबंटू 14.04 और मंगोल 3. पर काम करता है।
शून्य

1
यह कार्य उबंटू उपयोगकर्ताओं के लिए कृपया /etc/init/mongod.conf के लिए वैकल्पिक प्रविष्टि जोड़ें। ग्रेसियस।
जेसन सेब्रिंग

मैं ubuntu पर mongodb का उपयोग कर रहा हूं जहां मेरी गोपनीय फ़ाइल YAML प्रारूप में है। क्या कोई वैकल्पिक समाधान वहां भी लागू है?
प्रवीण जैन


10

Ubuntu 14.04 के लिए upstart का उपयोग कर:

चूंकि हम Ansible के साथ मशीनों को तैनात कर रहे हैं, इसलिए मुझे आरसी फाइलें या GRUB कॉन्फ़िगरेशन को संशोधित करना पसंद नहीं है।

मैंने प्रयोग करने की कोशिश की sysfsutils/sysfs.conf तेज (या धीमी मशीनों) पर सेवाओं को शुरू करते समय लेकिन समय के मुद्दों में भाग लिया। ऐसा लग रहा था कि कभी-कभी sysfsutils से पहले mongod शुरू हो गया था। कभी-कभी यह काम करता था, कभी-कभी ऐसा नहीं होता था।

चूंकि मोंगॉड एक अपस्टार्ट प्रक्रिया है, मैंने पाया कि सबसे साफ समाधान /etc/init/mongod_vm_settings.confनिम्न सामग्री के साथ फाइल को जोड़ना था :

# Ubuntu upstart file at /etc/init/mongod_vm_settings.conf
#
#   This file will set the correct kernel VM settings for MongoDB
#   This file is maintained in Ansible

start on (starting mongod)
script
  echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
  echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
end script

यह स्क्रिप्ट शुरू होने से ठीक पहले चलेगी। मोंगॉड ( sudo service mongod restart) और किया गया।


8
  1. खुला / आदि / डिफ़ॉल्ट / ग्रब

    सुडो vi / etc / डिफ़ॉल्ट / ग्रब

  2. अपडेट करें
    GRUB_CMDLINE_LINUX_DEFAULT = "" GRUB_CMDLINE_LINUX_DEFAULT को = "transparent_hugepage = कभी नहीं"

  3. फाइल सुरक्षित करें
    : wq (vi में)
  4. अपडेट-ग्रब चलाएं

    सुडो अपडेट-ग्रब

  5. रिबूट मशीन

अद्यतन: यदि आप एक वर्चुअल होस्टिंग प्रदाता का उपयोग कर रहे हैं, तो यह काम करेगा IFF ग्रब बूट समर्थित है। DigitalOcean ग्रब बूट का समर्थन नहीं करता है।


1
यह मेरे लिए काम नहीं करता है ... (हां, मेरे पास अपनी खुद की लिनक्स मशीन है, ग्रब बूट के साथ) ...:
Pierpaolo Cira

1
ध्यान दें कि यदि आप यहां बताए गए कुछ समाधानों का उपयोग कर रहे हैं, तो एक सिस्टम पर जो 'ट्यून' भी चलता है, ट्यून उन समाधानों को ओवरराइड कर सकता है। अधिक जानकारी के लिए यहां देखें: Bugzilla.redhat.com/show_bug.cgi?id=1189868
Dejay Clayton

5

सत्यापित किया जाता है कि सक्षम के संबंध में डीफ़्रैग की जांच की जाती है:

$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
$ cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
$ service mongod start
... (in log) WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'
$ echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
$ cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
$ service mongod stop
$ service mongod start
... (no warning in log)

इसलिए, इस बग को ठीक करने के लिए पहले पारदर्शी_हुगेपेज / सक्षम को देखना है, और यदि यह कभी नहीं है, तो अप्रासंगिक पारदर्शी_हुगेपेज / डीफ़्रैग सेटिंग को देखने से परेशान न करें।

स्रोत


ओरेकल लिनक्स 7 पर काम करना, डीफ़्रैग कभी भी अनुशंसित परिवर्तनों के बाद दूर नहीं हुआ .. अंत में राहत की एक बड़ी आह! इस उत्तर को और अधिक बढ़ाने की जरूरत है !! मैंने इसे खोदने में 4 घंटे लगाए।
Gnana

4

उबंटू 16.04 systemd का उपयोग कर:

systemctl edit mongod

निम्नलिखित पेस्ट करें:

[Service]
PermissionsStartOnly=true
ExecStartPre=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStartPre=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/defrag"

1
Centos 7 के लिए /usr/lib/systemd/system/mongod.service में भी काम किया
शॉर्टस्टेप्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.