关于MongoDB最大连接数的查看与修改
2015-08-05 14:30
676 查看
在Linux平台下,无论是64位或者32位的MongoDB默认最大连接数都是819,WIN平台不知道,估计也没有人在 WIN平台下使用MongoDB做生产环境
[root@DELL113 mongodb-linux-i686-2.4.1]# mongo admin -u root -p password
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/admin
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
途中available显示818少了一个,表示空闲的。current表示已经占用了的连接数,两数一加就等于819,如果我现在在连接一个,那么available就是817,current就是2
[root@linuxidc mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
> db.serverStatus().connections
{ "current" : 2, "available" : 817, "totalCreated" : NumberLong(2) }
819个连接数对于一般的站点我认为已经够用,并且都是现连现取现断。但这个连接数也可以修改,只要在启动的时候加入--maxConns即可
服务器启动
[root@lee mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000
Wed Apr 3 11:06:21.905 [initandlisten] MongoDB starting : pid=2812 port=27017 dbpath=/root/db 64-bit host=lee
Wed Apr 3 11:06:21.957 [initandlisten] db version v2.4.1
Wed Apr 3 11:06:21.957 [initandlisten] git version: 1560959e9ce11a693be8b4d0d160d633eee75110
Wed Apr 3 11:06:21.957 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Apr 3 11:06:21.957 [initandlisten] allocator: tcmalloc
Wed Apr 3 11:06:21.957 [initandlisten] options: { dbpath: "/root/db", maxConns: 2000 }
Wed Apr 3 11:06:21.982 [initandlisten] journal dir=/root/db/journal
Wed Apr 3 11:06:21.982 [initandlisten] recover : no journal files present, no recovery needed
Wed Apr 3 11:06:22.297 [initandlisten] preallocateIsFaster=true 2.62
Wed Apr 3 11:06:22.717 [initandlisten] --maxConns too high, can only handle 819
Wed Apr 3 11:06:22.724 [initandlisten] waiting for connections on port 27017
Wed Apr 3 11:06:22.725 [websvr] admin web console waiting for connections on port 28017
Wed Apr 3 11:06:25.126 [initandlisten] connection accepted from 192.168.4.86:53917 #1 (1 connection now open)
查询最大连接数
[root@linuxidc mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
>
发现还是819?其实是Linux默认进程能打开最大文件数有关,可以通过ulimit 解决
[root@lee mongodb-linux-x86_64-2.4.1]# ulimit -n 2500
[root@lee mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000
Wed Apr 3 11:11:07.013 [initandlisten] MongoDB starting : pid=2930 port=27017 dbpath=/root/db 64-bit host=lee
Wed Apr 3 11:11:07.013 [initandlisten] db version v2.4.1
Wed Apr 3 11:11:07.013 [initandlisten] git version: 1560959e9ce11a693be8b4d0d160d633eee75110
Wed Apr 3 11:11:07.013 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Apr 3 11:11:07.013 [initandlisten] allocator: tcmalloc
Wed Apr 3 11:11:07.013 [initandlisten] options: { dbpath: "/root/db", maxConns: 2000 }
Wed Apr 3 11:11:07.031 [initandlisten] journal dir=/root/db/journal
Wed Apr 3 11:11:07.031 [initandlisten] recover : no journal files present, no recovery needed
Wed Apr 3 11:11:07.170 [initandlisten] waiting for connections on port 27017
Wed Apr 3 11:11:07.171 [websvr] admin web console waiting for connections on port 28017
Wed Apr 3 11:11:10.076 [initandlisten] connection accepted from 192.168.4.86:53161 #1 (1 connection now open)
再查看最大连接数,
[root@linuxidc mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
{ "current" : 1, "available" : 1999, "totalCreated" : NumberLong(1) }
>
如果我们只是普通用户,只是暂时的修改ulimit -n,可以直接shell命令来修改(ulimit -n 1024000)。但是这个设置时暂时的保留!当我们退出bash后,该值恢复原值。
如果要永久修改ulimit,需要修改/etc/security/limits.conf。
vim /etc/security/limits.conf
# 添加如下两行
* soft nofile 4100
* hard nofile 4100
注意:* 代表针对所有用户
nofile 是代表最大文件打开数
使用下面的命令使之生效:
# sysctl -p
新打开一个窗口,ulimit -n验证一下是否生效。
修改完
ulimit 值后记得重启 mongod 和 mongos 保证这些值起作用
/proc存储每个进程的限制值,该文件存放在
/proc/<pid>/limits``形式的文件系统对象。其中 ``<pid> 是进程的 PID 项或进程标识。
/*
ulimit -a 显示当前用户的各种限制。
ulimit -n 的数值表示每个进程可以打开的文件数目
一般情况下, ulimit -n 的数值是1024.
当进程打开的文件数目超过此限制时,该进程就会退出。
因此,有些时候我们需要修改此限制。
*/
本篇文章参考:http://www.linuxidc.com/Linux/2015-02/113424.htm
http://blog.163.com/helloworld_zhouli/blog/static/20337112120132455236297/
[root@DELL113 mongodb-linux-i686-2.4.1]# mongo admin -u root -p password
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/admin
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
途中available显示818少了一个,表示空闲的。current表示已经占用了的连接数,两数一加就等于819,如果我现在在连接一个,那么available就是817,current就是2
[root@linuxidc mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
> db.serverStatus().connections
{ "current" : 2, "available" : 817, "totalCreated" : NumberLong(2) }
819个连接数对于一般的站点我认为已经够用,并且都是现连现取现断。但这个连接数也可以修改,只要在启动的时候加入--maxConns即可
服务器启动
[root@lee mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000
Wed Apr 3 11:06:21.905 [initandlisten] MongoDB starting : pid=2812 port=27017 dbpath=/root/db 64-bit host=lee
Wed Apr 3 11:06:21.957 [initandlisten] db version v2.4.1
Wed Apr 3 11:06:21.957 [initandlisten] git version: 1560959e9ce11a693be8b4d0d160d633eee75110
Wed Apr 3 11:06:21.957 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Apr 3 11:06:21.957 [initandlisten] allocator: tcmalloc
Wed Apr 3 11:06:21.957 [initandlisten] options: { dbpath: "/root/db", maxConns: 2000 }
Wed Apr 3 11:06:21.982 [initandlisten] journal dir=/root/db/journal
Wed Apr 3 11:06:21.982 [initandlisten] recover : no journal files present, no recovery needed
Wed Apr 3 11:06:22.297 [initandlisten] preallocateIsFaster=true 2.62
Wed Apr 3 11:06:22.717 [initandlisten] --maxConns too high, can only handle 819
Wed Apr 3 11:06:22.724 [initandlisten] waiting for connections on port 27017
Wed Apr 3 11:06:22.725 [websvr] admin web console waiting for connections on port 28017
Wed Apr 3 11:06:25.126 [initandlisten] connection accepted from 192.168.4.86:53917 #1 (1 connection now open)
查询最大连接数
[root@linuxidc mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
>
发现还是819?其实是Linux默认进程能打开最大文件数有关,可以通过ulimit 解决
[root@lee mongodb-linux-x86_64-2.4.1]# ulimit -n 2500
[root@lee mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000
Wed Apr 3 11:11:07.013 [initandlisten] MongoDB starting : pid=2930 port=27017 dbpath=/root/db 64-bit host=lee
Wed Apr 3 11:11:07.013 [initandlisten] db version v2.4.1
Wed Apr 3 11:11:07.013 [initandlisten] git version: 1560959e9ce11a693be8b4d0d160d633eee75110
Wed Apr 3 11:11:07.013 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Apr 3 11:11:07.013 [initandlisten] allocator: tcmalloc
Wed Apr 3 11:11:07.013 [initandlisten] options: { dbpath: "/root/db", maxConns: 2000 }
Wed Apr 3 11:11:07.031 [initandlisten] journal dir=/root/db/journal
Wed Apr 3 11:11:07.031 [initandlisten] recover : no journal files present, no recovery needed
Wed Apr 3 11:11:07.170 [initandlisten] waiting for connections on port 27017
Wed Apr 3 11:11:07.171 [websvr] admin web console waiting for connections on port 28017
Wed Apr 3 11:11:10.076 [initandlisten] connection accepted from 192.168.4.86:53161 #1 (1 connection now open)
再查看最大连接数,
[root@linuxidc mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
{ "current" : 1, "available" : 1999, "totalCreated" : NumberLong(1) }
>
如果我们只是普通用户,只是暂时的修改ulimit -n,可以直接shell命令来修改(ulimit -n 1024000)。但是这个设置时暂时的保留!当我们退出bash后,该值恢复原值。
如果要永久修改ulimit,需要修改/etc/security/limits.conf。
vim /etc/security/limits.conf
# 添加如下两行
* soft nofile 4100
* hard nofile 4100
注意:* 代表针对所有用户
nofile 是代表最大文件打开数
使用下面的命令使之生效:
# sysctl -p
新打开一个窗口,ulimit -n验证一下是否生效。
修改完
ulimit 值后记得重启 mongod 和 mongos 保证这些值起作用
/proc存储每个进程的限制值,该文件存放在
/proc/<pid>/limits``形式的文件系统对象。其中 ``<pid> 是进程的 PID 项或进程标识。
/*
ulimit -a 显示当前用户的各种限制。
ulimit -n 的数值表示每个进程可以打开的文件数目
一般情况下, ulimit -n 的数值是1024.
当进程打开的文件数目超过此限制时,该进程就会退出。
因此,有些时候我们需要修改此限制。
*/
本篇文章参考:http://www.linuxidc.com/Linux/2015-02/113424.htm
http://blog.163.com/helloworld_zhouli/blog/static/20337112120132455236297/
相关文章推荐
- CentOS编译安装MongoDB
- Nutch2.3分布执行过程中Mongodb中数据的变化
- MongoDB Sharding实践
- Mongodb详解与安装
- Mongodb常用命令
- Mongodb与Elasticsearch配合使用进一步研究(二)
- 初拥Mongodb的一些小问题
- linux 下安装mongoDB(转)
- MongoDB
- 结合MongoDB开发LBS应用
- linux 64位下的 mongodb 安装
- MongoDB常用操作
- MongoDB与Elasticsearch的进一步研究(一)
- 【JAVA版】Storm程序整合Kafka、Mongodb示例及部署
- Java MongoDB插入
- mongodb操作
- MongoDB常用命令
- If you object has an "Id' property, it will be set with the generated Id from MongoDB.
- MongoDb的“not master and slaveok=false”错误及解决方法
- mongodb使用记录