更新时间:2023-01-18 GMT+08:00

如何查询及限制连接数

下面以副本集实例为例,介绍如何查询实例的连接使用情况,以及设置连接池的连接数。

查询当前连接数

根据您购买的文档数据库实例规格不同,最大连接数也不同。

最大连接数是指实例中每个节点的最大连接数。

示例:您购买了2核4GB规格的三节点副本集实例,那么该实例的Primary节点和Secondary节点的最大连接数均为1000,Hidden节点由于其架构特殊性,不对外提供服务。

使用Mongo Shell连接副本集主节点后,执行命令db.serverStatus().connections查询节点当前连接数。

replica:PRIMARY> db.serverStatus().connections
{ "current" : 7, "available" : 398, "totalCreated" : 818364 }

您需要关注以下参数及对应的值:

  • current:当前已经建立的连接数。
  • available:当前可用的连接数。

查询当前连接来源

  1. 使用Mongo Shell连接副本集主节点后,切换至admin数据库。

    replica:PRIMARY> use admin

  2. 执行命令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"

图2 限制连接数

关于不同语言的客户端如何限制连接池的数量,请参考MongoDB官网各语言客户端的API文档。