mongo启动WARNING: /proc/sys/vm/zone_reclaim_mode is 1

mongo启动WARNING: /proc/sys/vm/zone_reclaim_mode is 1

作者:myadmin |  时间:2014-09-02 |  浏览:8560 |  0 条评论

先来一张错误图片:

从图片上明显看到 

Tue Sep  2 10:00:10 [initandlisten] ** WARNING: /proc/sys/vm/zone_reclaim_mode is 1
Tue Sep  2 10:00:10 [initandlisten] **          We suggest setting it to 0
Tue Sep  2 10:00:10 [initandlisten] **          http://www.kernel.org/doc/Documentation/sysctl/vm.txt

启动程序报了个警告,警告的意思:建议将 zone_reclaim_mode 设置为 0

zone_reclaim_mode 这是一个内核参数,意义如下:

a、当某个节点可用内存不足时:
1、如果为0的话,那么系统会倾向于从其他节点分配内存
2、如果为1的话,那么系统会倾向于从本地节点回收Cache内存多数时候
b、Cache对性能很重要,所以0是一个更好的选择。

这是其官方文档的介绍  http://www.kernel.org/doc/Documentation/sysctl/vm.txt


出现这个问题一般和  WARNING: You are running on a NUMA machine. 这个警告同时报出来

这个问题已经有文章说明了 http://www.uuboku.com/212.html

说的都是内核中cpu和内存分配情况

【解决办法】

[root@cangku-1-132 ~]# echo 0 > /proc/sys/vm/zone_reclaim_mode 
[root@cangku-1-132 ~]# echo "echo 0 > /proc/sys/vm/zone_reclaim_mode" >> /etc/rc.d/rc.local

首先把  /proc/sys/vm/zone_reclaim_mode 的内核修改 0 ,然后把这个  配置项写到  启动程序中,问题就得以解决了。


顺便说下第二个红框种的问题

--maxConns too high, can only handle 819

[root@cangku-16-132 log]# ulimit -n
1024
[root@cangku-16-132 log]# ulimit -n 2500
[root@cangku-16-132 log]# ulimit -n
2500

说是个问题其实也不是问题。出现这个警告是因为启动mongodb的时候,有传递一个参数maxConns:2000  。这个参数对于mongodb太高了,他目前只能接受819的最大连接数。

进入mongodb查看下

[root@cangku-16-132 ~]# mongo 192.168.1.132:27017/admin  -u root -p ******
MongoDB shell version: 2.2.7
connecting to: 192.168.1.132:27017/admin
> db.serverStatus().connections
{ "current" : 14, "available" : 805 }

最大连接数是 14+805 = 819

其实是Linux默认进程能打开最大文件数有关,可以通过ulimit 解决

ulimit -n 2500

按照原来的参数再次启动 mongodb,这个提示没有了。

登录mongodb,产看现在的连接数:

[root@cangku-16-132 rc.d]# mongo 192.168.1.132:27017/admin  -u root -p ******
MongoDB shell version: 2.2.7
connecting to: 192.168.1.132:27017/admin
> db.serverStatus().connections
{ "current" : 11, "available" : 1989 }

最大连接数已经变 11+1989=2000 了。 

备注: 

1、修改mongodb最大连接数,在启动里边加参数  –maxConns=20000 或者在 /etc/mongod.cnf(mongoDB配置文件) 都可以。

2、mongoDB最大连接数是20000。所以业界流传一段话,千万级以下的用mysql、千万级以上的用mongodb,亿级以上的用hadoop。

3、ulimit -n 2500 这个配置只能在本次打开的终端中生效,关闭终端或者重启服务器,配置都会失效。

要想永久生效,还请看下篇文章的讲解!

标签:

相关推荐
更多

发表评论