`

MongoDB最大连接数的查看与修改

阅读更多

在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。
如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。 
maxWaitTime:最大等待连接的线程阻塞时间 
connectTimeout:连接Mongo超时时间,单位:毫秒。默认为0(不超时)
socketTimeout:连接上后,读取写入数据socket超时时间。默认为0(不超时) 
autoConnectRetry:这个控制是否在一个连接时,系统会自动重试 
分享到:
评论

相关推荐

    docker下部署mongodb

    详细介绍了在docker下部署mongodb的方法以及启动命令及设置容器开机自启动的命令。文章末还介绍了“当使用docker容器的时候有可能出现以下情况:IPv4转发已禁用”解决方法。

    Mongodb in Mycat指南

    其中,`name`属性用于唯一标识该连接配置,`maxCon`和`minCon`分别定义了连接池的最大和最小连接数,`balance`和`writeType`用于控制写操作的负载均衡策略。 - **配置表** 在`<schema>`节点中为MongoDB表指定配置...

    MongoDB介绍与使用文档

    ### MongoDB介绍与使用文档 #### mongoDB概述 MongoDB是一个介于关系数据库和非关系数据库之间的产品,它属于NoSQL数据库的一种,具有高度灵活性和强大的查询能力。与传统的关系型数据库相比,MongoDB采用了面向...

    mongodb复制集

    7. `--maxConns arg`: 最大连接数,默认1000000。 8. `--logpath arg`: 日志文件路径。 9. `--pidfilepath arg`: PID文件路径,用于记录进程ID。 10. `--keyFile arg`: 分片验证时使用的关键文件路径。 11. `--...

    mongodb优化

    在 MongoDB 命令行中,可以通过执行 `db.adminCommand({setParameter:1,internalQueryExecMaxBlockingSortBytes:335544320})` 来增加内部查询最大阻塞排序字节数,这有助于处理更大规模的数据排序。 慢查询是性能...

    MongoDB启动配置详解.pdf

    在本文中,我们将详细了解MongoDB的启动配置,参数说明,修改服务器的最大连接数,并介绍如何完成开启自启动的方法。 MongoDB配置及参数说明 在MongoDB的安装目录中,有几个子目录,bin下面是可执行文件,包括...

    mongodb3.2集群配置

    - `maxIncomingConnections: 65536`:最大允许的传入连接数。 - `wireObjectCheck: true`:开启对文档的严格检查。 4. **replication**: - `replSetName: shard_1_ReplSet`:指定复制集名称。 - `oplogSizeMB:...

    mongodb基础学习

    - **最大连接数**:控制最大连接数,减少线程切换带来的性能损耗。 - **索引构建选项**:关闭索引构建重试选项`indexBuildRetry:false`,提高构建效率。 #### 配置示例 以下是一个简单的`mongod.cnf`配置文件示例:...

    MongoDB 参考文档

    本参考文档旨在深入解析MongoDB的使用方法,涵盖其基本操作到高级功能,是学习与掌握MongoDB不可或缺的资料。 #### 关于MongoDB文档 在文档的第一部分“关于MongoDB文档”中,详细介绍了MongoDB文档的结构、版权、...

    解决MongoDB占用内存过大频繁死机的方法详解

    可以调整`maxConns`参数来限制最大同时连接数。默认值为1000000,你可以根据实际情况适当降低这个数值。 3. **优化查询和索引**: 不恰当的查询和缺乏合适索引可能导致MongoDB在处理数据时占用大量内存。审查查询...

    Ubuntu系统中安装MongoDB及其启动命令mongod的教程

    其中,`-journal`开启日志功能,`-maxConns=2400`设置最大连接数为2400,`-rest`允许通过REST API访问MongoDB。 5. **调整系统最大文件打开数**: 默认情况下,Ubuntu系统的最大文件打开数可能不足,可以使用`...

    Mongodb 启动命令mongod参数说明(中文翻译)

    19. **--maxConns arg**:设置最大并发连接数,默认为 2000。 20. **--noauth**:禁用身份验证,不建议在生产环境中使用。 21. **--nohttpinterface**:关闭 HTTP 接口,防止未经授权的访问。 22. **--noprealloc...

    解决启动MongoDB错误:error while loading shared libraries: libstdc++.so.6:cannot open shared object file:

    - MongoDB的最大连接数设置无效,可能是因为配置文件的修改未生效,需要检查配置的正确性并重启服务。 - MongoDB磁盘I/O问题通常与存储设备性能有关,可能需要优化硬件配置或调整数据存储策略。 - 在Windows 10上...

    Mongodb启动命令参数中文说明

    15. **--maxConns arg**: 设置最大并发连接数,默认为 2000。 16. **--noauth**: 禁用身份验证,让所有用户都能无限制地访问数据库。 17. **--nohttpinterface**: 关闭 HTTP 接口,防止未经授权的访问。 18. **--...

Global site tag (gtag.js) - Google Analytics