如何避免mongodb中的transparent_hugepage / defrag警告?
我收到了关于THP的关于mongodb的以下警告
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' 但我确实设法手动closuresTHP
 frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never] 
 我做了诀窍,在/etc/default/grub添加了transparent_hugepage=never GRUB_CMDLINE_LINUX_DEFAULT并添加 
 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi 
 到/etc/rc.local 
我怎样才能避免这个警告?
正式的MongoDB文档为这个问题提供了几种解决scheme。 你也可以尝试这个解决scheme ,它为我工作:
注意: 如果MongoDB版本大于3.0,请尝试官方文档指令
- 
打开 /etc/init.d/mongod文件。
 (如果没有这样的文件,你可能会检查/etc/init/mongod.conf文件 – 信用:下面的评论)
- 
在 chown $DAEMONUSER /var/run/mongodb.pid和end script之前立即添加下面的行。
-  重新启动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 
而已!
MongoDB已经更新了他们的build议,现在使用init.d脚本: http : //docs.mongodb.org/master/tutorial/transparent-huge-pages/
对于使用新贵的Ubuntu 14.04:
由于我们正在使用Ansible部署机器,因此我不喜欢修改rc文件或GRUBconfiguration。
 我尝试使用sysfsutils / sysfs.conf但在快速(或慢速机器)上启动服务时遇到了计时问题。 看起来有时候mongod是在sysfsutils之前启动的。 有时它起作用,有时它不起作用。 
 由于mongod是一个暴发户的过程,我发现最简洁的解决scheme是添加文件/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 
 这将在mongod启动之前运行脚本。 重新启动mongod( sudo service mongod restart )并完成。 
- 
打开/ etc / default / grub sudo vi / etc / default / grub 
- 
更新 
 GRUB_CMDLINE_LINUX_DEFAULT =“”to GRUB_CMDLINE_LINUX_DEFAULT =“transparent_hugepage = never”
-  保存存档 
 :wq(在vi中)
- 
运行update-grub sudo update-grub 
- 
重新启动机器 
更新:如果您正在使用虚拟主机提供商,这将工作IFF GRUB引导是支持的。 DigitalOcean不支持grub引导。
validation磁盘碎片整理检查不考虑启用:
 $ 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) 
因此,解决这个问题的方法是首先查看transparent_hugepage / enabled,如果不是的话,不要费神去查看不相关的transparent_hugepage / defrag设置。
来源 。