在Linux平台下,无论是64位或者32位的MongoDB默认最大连接数都是819,WIN平台不知道.
1
2
3
4
5
|
[root@DELL113 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) }
|
途中available显示818少了一个,表示空闲的。current表示已经占用了的连接数,两数一加就等于819,如果我现在在连接一个,那么available就是817,current就是2
1
2
3
4
5
6
7
|
[root@DELL113 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即可
服务器启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[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)
|
查询最大连接数
1
2
3
4
5
6
|
[root@DELL113 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 解决
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[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)
|
再查看最大连接数,搞定
1
2
3
4
5
6
|
[root@DELL113 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) }
> |
com.mongodb.MongoOptions的配置说明如下:
connectionsPerHost:每个主机的连接数,默认值是10。
threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值,默认值是5。
threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值,默认值是5。
如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。
maxWaitTime:最大等待连接的线程阻塞时间
connectTimeout:连接Mongo超时时间,单位:毫秒。默认为0(不超时)
socketTimeout:连接上后,读取写入数据socket超时时间。默认为0(不超时)
autoConnectRetry:这个控制是否在一个连接时,系统会自动重试
maxWaitTime:最大等待连接的线程阻塞时间
connectTimeout:连接Mongo超时时间,单位:毫秒。默认为0(不超时)
socketTimeout:连接上后,读取写入数据socket超时时间。默认为0(不超时)
autoConnectRetry:这个控制是否在一个连接时,系统会自动重试
相关推荐
mongodb最大连接数是20000。所以业界流传一段话,千万级以下的用mysql、千万级以上的用mongodb,亿级以上的用hadoop。下面这篇文章主要给大家介绍了关于MongoDB最大连接数设置失效的异常分析过程,需要的朋友可以...
mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题
11.3.0 如何查看使用MongoDB的连接?
mongodb客户端连接工具,非常简便好用的客户端连接工具
该代码是C++ MongoDB的连接池代码实现。代码封装了一个连接池类对象,通过该对象提供的连接池来操作MongoDB,提升了性能,减少了数据库连接资源的开销。
Springboot配置MongoDB连接池源代码,包括有搭建Springboot项目,整合mybatis,mysql的代码。
Mongodb解决连接池不够的问题,多连接的问题。
java连接mongodb测试,包括增删改查等操作的实用技术
kotlin语言写mongodb连接工具类,没有用配置文件,kotlin语言写mongodb连接工具类,没有用配置文件
MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。用于研究MongoDB数据库,就像pl/sql之于oracle.
java mongodb 连接
Java 连接MongoDB, java 连接mongodb的操作
解决连接池不够的问题,多连接的问题。适用于mongoDB项目开发,感兴趣可以下载使用,记得好评哦。欢迎在下方留言
mongodb连接第三方工具
随着NoSQL数据库越来越流行,MongoDB数据库作为NoSQL数据库中的领头羊,使用也越来越广泛。为此,FineReport V8.0版本提供了数据连接和数据集接口,可以通过开发一款可以连接和使用的MongoDB数据库的插件。
针对32位操作系统不能使用64位的Robomongo连接工具,所以上传32位的mongodb数据库连接工具
此工具是连接mongodb的图形化界面工具,工具使用方式请自行网上搜索
MongoVUE,mongoDb连接的客户端,简单方便好用,类似于sqlyog的管理界面方便简单