在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:这个控制是否在一个连接时,系统会自动重试
相关推荐
详细介绍了在docker下部署mongodb的方法以及启动命令及设置容器开机自启动的命令。文章末还介绍了“当使用docker容器的时候有可能出现以下情况:IPv4转发已禁用”解决方法。
其中,`name`属性用于唯一标识该连接配置,`maxCon`和`minCon`分别定义了连接池的最大和最小连接数,`balance`和`writeType`用于控制写操作的负载均衡策略。 - **配置表** 在`<schema>`节点中为MongoDB表指定配置...
### MongoDB介绍与使用文档 #### mongoDB概述 MongoDB是一个介于关系数据库和非关系数据库之间的产品,它属于NoSQL数据库的一种,具有高度灵活性和强大的查询能力。与传统的关系型数据库相比,MongoDB采用了面向...
7. `--maxConns arg`: 最大连接数,默认1000000。 8. `--logpath arg`: 日志文件路径。 9. `--pidfilepath arg`: PID文件路径,用于记录进程ID。 10. `--keyFile arg`: 分片验证时使用的关键文件路径。 11. `--...
在 MongoDB 命令行中,可以通过执行 `db.adminCommand({setParameter:1,internalQueryExecMaxBlockingSortBytes:335544320})` 来增加内部查询最大阻塞排序字节数,这有助于处理更大规模的数据排序。 慢查询是性能...
在本文中,我们将详细了解MongoDB的启动配置,参数说明,修改服务器的最大连接数,并介绍如何完成开启自启动的方法。 MongoDB配置及参数说明 在MongoDB的安装目录中,有几个子目录,bin下面是可执行文件,包括...
- `maxIncomingConnections: 65536`:最大允许的传入连接数。 - `wireObjectCheck: true`:开启对文档的严格检查。 4. **replication**: - `replSetName: shard_1_ReplSet`:指定复制集名称。 - `oplogSizeMB:...
- **最大连接数**:控制最大连接数,减少线程切换带来的性能损耗。 - **索引构建选项**:关闭索引构建重试选项`indexBuildRetry:false`,提高构建效率。 #### 配置示例 以下是一个简单的`mongod.cnf`配置文件示例:...
本参考文档旨在深入解析MongoDB的使用方法,涵盖其基本操作到高级功能,是学习与掌握MongoDB不可或缺的资料。 #### 关于MongoDB文档 在文档的第一部分“关于MongoDB文档”中,详细介绍了MongoDB文档的结构、版权、...
可以调整`maxConns`参数来限制最大同时连接数。默认值为1000000,你可以根据实际情况适当降低这个数值。 3. **优化查询和索引**: 不恰当的查询和缺乏合适索引可能导致MongoDB在处理数据时占用大量内存。审查查询...
其中,`-journal`开启日志功能,`-maxConns=2400`设置最大连接数为2400,`-rest`允许通过REST API访问MongoDB。 5. **调整系统最大文件打开数**: 默认情况下,Ubuntu系统的最大文件打开数可能不足,可以使用`...
19. **--maxConns arg**:设置最大并发连接数,默认为 2000。 20. **--noauth**:禁用身份验证,不建议在生产环境中使用。 21. **--nohttpinterface**:关闭 HTTP 接口,防止未经授权的访问。 22. **--noprealloc...
- MongoDB的最大连接数设置无效,可能是因为配置文件的修改未生效,需要检查配置的正确性并重启服务。 - MongoDB磁盘I/O问题通常与存储设备性能有关,可能需要优化硬件配置或调整数据存储策略。 - 在Windows 10上...
15. **--maxConns arg**: 设置最大并发连接数,默认为 2000。 16. **--noauth**: 禁用身份验证,让所有用户都能无限制地访问数据库。 17. **--nohttpinterface**: 关闭 HTTP 接口,防止未经授权的访问。 18. **--...
- **配置调整**: 在配置管理部分,可以修改ZLMediaKit的配置文件,如修改端口、最大连接数等。 4. **最佳实践** - **负载均衡**: 当有大量并发连接时,可以配置多个ZLMediaKit实例并使用负载均衡策略分发请求。 ...