修改mongog默认最大连接数

1.mongodb sharding cluster默认最大连接数是819,我想调大一些,但是始终没有调整成功。

[root@ctl1m ~]# mongo mongodb://10.0.1.121:30000
MongoDB shell version v3.4.9
connecting to: mongodb://10.0.1.121:30000
MongoDB server version: 3.4.9
2018-01-18T18:19:13.270+0800 I CONTROL  [main] 
mongos> db.serverStatus().connections
{ "current" : 715, "available" : 104, "totalCreated" : 719 }

从上面的结果可以看到最大连接数是819,当available为0时,重新登录就会报错:

[root@ctl1m ~]# mongo mongodb://10.0.1.121:30000
MongoDB shell version v3.4.9
connecting to: mongodb://10.0.1.121:30000
2018-01-19T10:52:41.277+0800 E QUERY    [thread1] Error: network error while attempting  to run command 'isMaster' on host '10.0.1.121:30000'  :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

2.我的修改过程:
修改/etc/secruity/limits.conf,重启系统查看ulimit -n是16384. 在mongos.conf文件中配置如下:
net:
port: 30000
bindIp: ctl1m # Listen to local interface only, comment to listen on all interfaces.
maxIncomingConnections: 8000
然后重启mongos服务,再次查看连接数,db.serverStatus().connections,发现还是819。我的修改有什么问题,您有什么修改方法吗?谢谢

也尝试用下面的方法启动mongos服务,依然没有效果:
/usr/bin/mongos --config /etc/mongod/mongos.conf --maxConns=3000

阅读 9.5k
3 个回答

ulimit -n 已经修改了,并且也生效了。最有我修改了service文件,总连接数就正常了:

[unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=root
Group=root
Environment="OPTIONS=-f /etc/mongod/mongos.conf"
ExecStart=/usr/bin/mongos $OPTIONS --maxConns 10000
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongos/mongod.pid

# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target

这个不是你Mongo服务器的限制,这个应该是你的Linux服务器能开启的最大文件数的限制。你可以试着修改:

//1. 移步到下列文件

sudo vim /etc/sysctl.conf

//2. 添加或者修改

fs.file-max = 50000  // 服务器可以大概的最大文件数

//3. 执行下面命令 设置用户范围的限制

ulimit -n 50000 

然后重启服务器在试一试。

插个不相关的问题,刚才碰到了,提醒一下新来的
db.serverStatus().connections需要授权clusterMonitor角色,具体权限对应角色可以参见角色
(打开连接,全文搜索serverStatus)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题