全部产品
Search
文档中心

如何查询及限制MongoDB实例的连接数

编辑
更新时间: 2020-11-12 编辑

概述

本文介绍如何查询MongoDB实例的连接使用情况以及连接池的连接数。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

查询当前MongoDB实例的连接数

根据您购买的MongoDB实例规格不同,最大连接数也不同,详情请参见实例规格
说明:最大连接数是指实例中每个节点的最大连接数,例如,您购买了1核2G规格的三节点副本集实例,那么该实例的Primary节点和Secondary节点的最大连接数均为500,Hidden节点由于其架构特殊性,不对外提供服务。
  1. 通过Mongo Shell连接实例,详情请参见连接实例
  2. 执行以下SQL语句,查询当前MongoDB实例的连接数。
    db.serverStatus().connections
     系统显示类似如下。
    {
            "current" : 1,
            "available" : 999,
            "internal_current" : 10,
            "internal_available" : 990,
            "totalCreated" : 632
    }             
    说明:您需要关注以下参数及对应的值。
    • current:当前已经建立的连接数。
    • available:当前可用的连接数。

查询当前MongoDB实例连接来源

  1. 通过Mongo Shell连接实例,详情请参见连接实例
  2. 执行以下SQL语句,切换至admin数据库。
    use admin
  3. 执行以下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