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

网络连接

最近更新时间2024.03.29 10:07:11

首次发布时间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

为副本集实例新增节点或为分片集群新增 Mongos 节点后,需要修改应用程序的连接地址代码才能连上新增节点吗?

为副本集实例新增节点或为分片集群新增 Mongos 节点后,您不修改客户端的连接地址串,MongoDB 也能自动发现并连接上新增节点。
但为保证故障切换和负载均衡效果,还是建议您在新增节点后,将客户端上的连接地址串代码替换为新的完整连接地址串代码(如下图所示),来连接 MongoDB 实例。具体操作步骤,请参见通过 Mongo Shell 工具连接实例

文档数据库 MongoDB 版是否支持 SRV 的连接方式?

首先并不是所有客户端(如旧版本的 MongoDB 客户端)都支持 SRV 记录;此外,使用 SRV 记录需要额外的 DNS 解析成本会对性能造成一定影响。出于如上兼容性和性能考虑,文档数据库 MongoDB 版不支持 SRV 的连接方式。建议您直接使用标准的完整连接地址串方式来访问 MongoDB 实例,具体操作步骤,请参见通过 Mongo Shell 工具连接实例

如何查看 MongoDB 连接地址对应的 IP 地址?

您可以参考如下步骤查看 MongoDB 连接地址对应的 IP 地址:

  1. 获取 MongoDB 实例的连接地址,更多信息请参见查看连接地址
  2. 登录客户端所在的 ECS 实例,并在命令行中执行 PING 命令。

    说明

    • 本文以 Mongo Shell 客户端为例。通过 Mongo Shell 工具连接 MongoDB 实例。具体操作步骤,请参见通过 Mongo Shell 工具连接实例
    • Windows 系统和 Linux 系统中都可以使用 PING 命令。
    命令示例如下。
    ping mongoreplicac1a11ecf5****.mongodb.ivolces.com
    
    返回结果示例如下。
    ping ip