本文介绍如何查询MongoDB实例的连接使用情况以及连接池的连接数。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
说明:最大连接数是指实例中每个节点的最大连接数,例如,您购买了1核2G规格的三节点副本集实例,那么该实例的Primary节点和Secondary节点的最大连接数均为500,Hidden节点由于其架构特殊性,不对外提供服务。
db.serverStatus().connections系统显示类似如下。
{ "current" : 1, "available" : 999, "internal_current" : 10, "internal_available" : 990, "totalCreated" : 632 }
说明:您需要关注以下参数及对应的值。
- current:当前已经建立的连接数。
- available:当前可用的连接数。
use admin
db.runCommand({currentOp: 1, $all:[{"active" : true}]})
说明:通过分析命令的输出结果,您可以查询每个连接对应的来源IP地址,从而得出各终端与MongoDB实例分别建立了多少连接。更多详情请参见 官方文档。
云数据库MongoDB支持通过Connection String URI连接数据库。通过Connection String URI连接数据库时,在URI末尾添加&maxPoolSize=[$Integer]
参数即可设置连接池的连接数。以下示例使用Mongo Shell连接为例:
mongo "mongodb://root:xxxxxx@dds-bpxxxxxxxx-pub.mongodb.rds.aliyuncs.com:3717,dds-bpxxxxxxxx-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-xxxxxx&maxPoolSize=[$Integer]"
说明:
- 关于不同语言的客户端如何限制连接池的数量,请参见MongoDB官网的API文档。
- [$Integer]为设置连接池的连接数。