如何避免 mongodb 的 transparent_hugepage/defrag 警告?
- 2024-11-12 08:36:00
- admin 原创
- 20
问题描述:
我收到来自 mongodb 关于 THP 的以下警告
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
我究竟该如何避免这个警告?
解决方案 1:
MongoDB 官方文档针对此问题提供了几种解决方案。您也可以尝试以下解决方案,它对我有用:
注意:如果 MongoDB 版本大于 3.0,请尝试使用官方文档指令
打开
/etc/init.d/mongod
文件。
(如果没有这样的文件,您可以检查/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
就是这样!
解决方案 2:
MongoDB 已更新其建议,现在
使用init.d脚本:http: //docs.mongodb.org/master/tutorial/transparent-huge-pages/
解决方案 3:
对于使用 upstart 的 Ubuntu 14.04:
由于我们使用 Ansible 部署机器,所以我不喜欢修改 rc 文件或 GRUB 配置。
我尝试使用sysfsutils
/,sysfs.conf
但在快速(或慢速)机器上启动服务时遇到了时间问题。有时 mongod 似乎在 sysfsutils 之前启动。有时它可以工作,有时则不行。
/etc/init/mongod_vm_settings.conf
由于 mongod 是一个新启动进程,我发现最干净的解决方案是添加包含以下内容的文件:
# 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
) 即可完成。
解决方案 4:
打开 /etc/default/grub
sudo vi /etc/default/grub
将GRUB_CMDLINE_LINUX_DEFAULT=""更新为 GRUB_CMDLINE_LINUX_DEFAULT="transparent_hugepage=never"
保存文件
:wq (在 vi 中)
运行更新-grub
sudo 更新 grub
重启机器
更新:如果您正在使用虚拟主机提供商,则此功能将在支持 grub boot 的情况下起作用。DigitalOcean 不支持 grub boot。
解决方案 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)
因此,修复此错误的方法是首先查看 transparent_hugepage/enabled,如果从未启用,则不要费心查看不相关的 transparent_hugepage/defrag 设置。
来源。
解决方案 6:
Ubuntu 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"
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件