实记处理mongodb的NUMA问题

实记处理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权威指南 》