如何查询及限制MongoDB实例的连接数
概述
本文介绍如何查询MongoDB实例的连接使用情况以及连接池的连接数。
详细信息
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
查询当前MongoDB实例的连接数
根据您购买的MongoDB实例规格不同,最大连接数也不同,详情请参见实例规格。
说明:最大连接数是指实例中每个节点的最大连接数,例如,您购买了1核2G规格的三节点副本集实例,那么该实例的Primary节点和Secondary节点的最大连接数均为500,Hidden节点由于其架构特殊性,不对外提供服务。
- 通过Mongo Shell连接实例,详情请参见连接实例。
- 执行以下SQL语句,查询当前MongoDB实例的连接数。
db.serverStatus().connections
系统显示类似如下。{ "current" : 1, "available" : 999, "internal_current" : 10, "internal_available" : 990, "totalCreated" : 632 }
说明:您需要关注以下参数及对应的值。
- current:当前已经建立的连接数。
- available:当前可用的连接数。
查询当前MongoDB实例连接来源
- 通过Mongo Shell连接实例,详情请参见连接实例。
- 执行以下SQL语句,切换至admin数据库。
use admin
- 执行以下SQL语句,查询当前MongoDB实例连接来源。
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]为设置连接池的连接数。
适用于
- 云数据库MongoDB