如何查询及限制连接数
下面以副本集实例为例,介绍如何查询实例的连接使用情况,以及设置连接池的连接数。
查询当前连接数
根据您购买的文档数据库实例规格不同,最大连接数也不同。
最大连接数是指实例中每个节点的最大连接数。
示例:您购买了2核4GB规格的三节点副本集实例,那么该实例的Primary节点和Secondary节点的最大连接数均为1000,Hidden节点由于其架构特殊性,不对外提供服务。
使用Mongo Shell连接副本集主节点后,执行命令db.serverStatus().connections查询节点当前连接数。
replica:PRIMARY> db.serverStatus().connections { "current" : 7, "available" : 398, "totalCreated" : 818364 }
您需要关注以下参数及对应的值:
- current:当前已经建立的连接数。
- available:当前可用的连接数。
查询当前连接来源
- 使用Mongo Shell连接副本集主节点后,切换至admin数据库。
replica:PRIMARY> use admin
- 执行命令db.runCommand({currentOp: 1, $all: true}),查询连接来源。
通过分析命令的输出结果,您可以查询每个连接对应的来源IP地址。从而得出各个终端和DDS实例分别建立了多少连接。
图1 输出结果
如何限制终端的连接数
文档数据库服务支持通过Connection String URI登录数据库。通过Connection String URI登录数据库时,在URI末尾加上“&maxPoolSize=<integer>”,即可设置连接池的连接数。
示例:使用Mongo Shell连接副本集实例时,限制连接池的连接数为10。
mongo "mongodb://rwuser:xxxxxxxxxx@192.168.168.116:8635,192.168.200.147:8635/test?authSource=admin&replicaSet=replica&maxPoolSize=10"
关于不同语言的客户端如何限制连接池的数量,请参考MongoDB官网各语言客户端的API文档。