实记处理mongodb的NUMA问题
一次在启动mongodb的过程中,出现过NUMA这个问题,
mongodb日志显示如下:
WARNING: You are running on a NUMA machine.
We suggest launching mongod like this to avoid performance problems:
numactl –interleave=all mongod [other options]
不了解NUMA具体的含义,想着先解决掉这个Waring,在查了相关的网上资料及相关书籍后,解决方法如下:
正如书中说道:禁用NUMA是提升性能的一个魔法按钮.
解决方案:
1.在原启动命令前面加numactl –interleave=all
即使用 # numactl --interleave=all mongod --logpath * dbpath *
需要重启脚本
(ps:可以先在shell下输入 numcatl ,看是否有它的相关命令,若是command not found ,则需安装numactl的rpm包. )
2.修改内核参数:
要禁用zone_reclaim_mode,运行
echo 0 > /proc/sys/vm/zone_reclaim_mode
无需重启mongo,zone_reclaim_mode选项即可生效
3.修改BIOS 来禁用NUMA
例如:如果在使用grub,可在grub.cfg在添加 numa=off 选项:
即 kernel /boot/vmlinuz-2.6.38-8-generic root=/dev/sda ro quiet numa=off
参考:http://www.ttlsa.com/html/1211.html 及《mongo权威指南 》