mongodb最大连接数修改

中国人最喜欢访问的网站
只要注册ofo就送你10块钱,还等什么,快来注册吧

在nodejs启动时一次性开了200个Mongodb连接,目的是为了高并发时减少数据库连接耗时。如果做cluster开10个实例就有2000个连接了,这样就有些节点连接不到数据库的情况。

原因是Mongodb默认最大连接数只有819个,于是通过在启动里面加参数--maxConns=3000来提高最大连接数。然后重启服务,但悲剧的是通过db.serverStatus().connections;查看到最大连接数还是819。原因是linux系统的限制,Linux系统默认一个进程最大文件打开数目为1024。需要在Mongodb开启前修改这个限制。在运行数据前运行ulimit -n命令 。如果已经加入开机脚本,就要在脚本中启动前增加这行了。比如:

ulimit -n 20000
/usr/mongodb/bin/mongod --dbpath=/usr/mongodb/data/ --logpath=/usr/mongodb/log/mongodb.log  --maxConns=3000  --fork

再查看就可以看到最大连接数增加了。

重启机器后仍有问题

解决问题:Invariant failure: ret resulted in status UnknownError 24: Too many open files at src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp 73

按照官方的建议https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings, 由于centos 6的最大进程连接数为1024,我们就增加一个限制设定的配置

Red Hat Enterprise Linux and CentOS 6 place a max process limitation of 1024 which overridesulimit settings. Create a file named /etc/security/limits.d/99-mongodb-nproc.conf with new soft nproc and hard nproc values to increase the process limit. See /etc/security/limits.d/90-nproc.conf file as an example.

按照官方推荐的设置

1
2
3
4
5
6
-f (file size): unlimited
-t (cpu time): unlimited
-v (virtual memory): unlimited [1]
-n (open files): 64000
-m (memory size): unlimited [1] [2]
-u (processes/threads): 64000

由于服务器只有openfiles不匹配且比推荐的小,另外process/threads比较大, 所以其中99-mongodb-nproc.conf的内容如下:

1
2
3
4
5
6
7
8
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
root soft nproc unlimited
root hard nproc unlimited
root soft nofile 64000
root hard nofile 64000

设计后重启机器,可用ulimit -a看到值已经更改,问题解决。

快下载安装吧,今天头条送你钱啦!!!!
中国人都在使用的地球上最好玩的游戏
中国人都在使用的地球上最好玩的游戏
中国人都在使用的地球上最快的浏览器
中国人都在使用的地球上最厉害的安全软件
中国人都在使用的地球上最好的看图王
中国人都在使用的地球上最快速的视频软件
中国人都在使用的地球上最全的视频软件
中国人都在使用的地球上最好最全的压缩软件
中国人都在使用的地球上最好的音乐播放器
中国人都在使用的地球上最安全的杀毒软件
中国人都在使用的地球上最全的影视大全