You need to enable JavaScript to run this app.
导航

网络连接

最近更新时间2023.02.10 19:05:45

首次发布时间2023.02.10 19:05:45

本文汇总了文档数据库 MongoDB 版网络连接的常见问题。

文档数据库 MongoDB 版是否支持公网访问?

支持。您可以为 MongoDB 实例申请公网地址,以便 VPC 外的设备通过公网地址来访问 MongoDB 实例。公网地址申请方法,请参见申请公网地址

文档数据库 MongoDB 版支持哪些语言的客户端进行连接?

文档数据库 MongoDB 版完全兼容官方 MongoDB 协议,因此文档数据库 MongoDB 版与官方 MongoDB 支持的客户端(如 Node.js、PHP、Java、Python、C、C++、Scala、Golang、.NET Core 等 )一致。关于多语言客户端的更多详情,请参见 MongoDB Drivers

如何通过自建账号(即非 root 账号)连接实例?

创建文档数据库 MongoDB 版实例时,系统会默认在 admin 数据库中创建一个 root 账号,拥有 MongoDB 内置 root 权限。您也可以自行创建其他权限的账号进行分权分库操作。账号创建成功后,您可以使用该账号来访问 MongoDB 实例。详细操作步骤,请参见通过自建账号连接实例

MongoDB 实例的最大连接数是多少?

MongoDB 实例的各节点规格都有对应的默认最大连接数,具体信息,请参见产品规格
默认最大连接数是指实例中单个节点的默认最大连接数。例如,1 核 2GiB 的副本集实例的单节点默认最大连接数为 1000,表示该实例的主节点和从节点(隐藏节点仅用于保障高可用,不提供连接服务)的默认最大连接数均为 1000。

如何查看 MongoDB 实例的连接使用情况?

您可以通过如下步骤来查看 MongoDB 实例当前连接数使用情况。

  1. 在安装了 Mongo Shell 的本地服务器或 ECS 中,通过 Mongo Shell 工具连接 MongoDB 实例。具体操作步骤,请参见通过 Mongo Shell 工具连接实例

  2. 执行如下命令来查看实例的连接数使用情况。

    db.serverStatus().connections
    

    返回结果示例如下。

    说明

    您可以重点关注 currentavailable 参数,实例的最大连接数 = 当前已建连的连接数 + 剩余可用的连接数。

    {
            "current" : 14,   // 当前已建连的连接数
            "available" : 386,  // 剩余可用的连接数
            "totalCreated" : 65, 
            "internalCurrent" : 15,
            "internalTotalCreated" : 618540,
            "active" : 3
    }
    

如何查看连接 MongoDB 实例的客户端来源?

您可以通过如下步骤来查看连接 MongoDB 实例的客户端来源(包括 IP 地址和端口号信息)。

  1. 在安装了 Mongo Shell 的本地服务器或 ECS 中,通过 Mongo Shell 工具连接 MongoDB 实例。具体操作步骤,请参见通过 Mongo Shell 工具连接实例
  2. 执行如下命令查看数据库中正在运行的语句。
    db.currentOp({"active" : true})
    
    部分返回结果示例如下。

    说明

    您可以重点关注查询结果中 client 参数(即当前连接所对应的客户端信息),来确认各客户端与 MongoDB 实例建立的连接数情况。关于 db.currentOp() 命令的更多用法,请参见 db.currentOp()

    {
                            ...
                            "client" : "192.168.***.***:****", // 当前连接所对应的客户端信息
                            "appName" : "MongoDB Shell",
                            "active" : true,
                            "currentOpTime" : "2023-01-28T16:45:51.243+0800",
                            "opid" : 7339****,
                            ...
                            "secs_running" : NumberLong(0),
                            "microsecs_running" : NumberLong(137),
                            "op" : "command",
                            "ns" : "admin.$cmd.aggregate",
                            "command" : {
                                    "currentOp" : 1,
                                    ...
                                    "$db" : "admin"
                            },
                            "numYields" : 0,
                            "locks" : {
                            },
                            "waitingForLock" : false,
                            "lockStats" : {
                            },
                            ...
                            
    }
    

如何限制访问 MongoDB 实例的客户端连接数?

您可以在连接 MongoDB 实例时,通过 &maxPoolSize=[$Integer] 参数,设置客户端连接池的最大连接数。
例如,当使用 Mongo Shell 工具连接 MongoDB 实例时,您可以在连接地址字符串的末尾添加 &maxPoolSize=[$Integer] 参数,具体命令示例如下(本文示例中以副本集实例私网连接地址为例,连接池数量为 2000)。

"mongodb://<user>:<password>@mongoreplicae9d7d321****0.mongodb.ivolces.com:3717,mongoreplicae9d7d321****1.mongodb.ivolces.com:3717/?authSource=admin&replicaSet=rs-mongo-replica-e9d7d321****&retryWrites=true&maxPoolSize=2000

不同语言客户端限制连接池数量的说明,请参见 MongoDB Drivers