You need to enable JavaScript to run this app.
导航
网络连接
最近更新时间:2024.12.04 11:23:21首次发布时间: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 的默认连接地址中 authSource 值为 admin(即会默认连接到 admin 库)。
若您自行创建的账号属于其它数据库(如 testdb1),您需要将 authSourceadmin 改为自建账号所在的数据库(如 testdb1)。详细操作步骤,请参见通过 Mongo Shell 工具连接实例

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

MongoDB 实例的各节点规格都有对应的默认推荐连接数,具体信息,请参见产品规格
推荐连接数是指实例中单个节点的默认连接数上限。例如,1 核 2GiB 的副本集实例的单节点推荐连接数为 1000,表示该实例的主节点和从节点(隐藏节点仅用于保障高可用,不提供连接服务)的默认连接数上限均为 1000。
连接数使用达到上限后,系统会拒绝新建的连接。若您需要使用更多的连接数,您可以通过 net.maxIncomingConnections 参数修改实例的单节点最大并发连接数,关于该参数的更多信息,请参见参数支持。您也可以通过升级节点规格获得更大的连接数。

如何查看 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 地址?

  • 方法一:直接在控制台查看
    具体查看方法,请参见查看连接地址

  • 方法二:通过 API 接口查询
    您可以调用 DescribeDBEndpoint 接口查询指定 MongoDB 实例的连接地址信息,包括实例不同连接地址对应的 IP 地址信息,即返回结果的 DBAddresses 结构体中 AddressIP 信息。

  • 方法三:通过 PING 命令查询
    您可以参考如下步骤查看 MongoDB 连接地址对应的 IP 地址:

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

      说明

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

是否支持修改 MongoDB 连接地址的域名?

当前仅支持修改副本集实例和分片集群实例中 Mongos 节点连接地址的私网或公网连接地址域名,但不支持修改分片集群实例中 Shard 分片或 ConfigServer 节点的连接地址域名。详细操作步骤,请参见修改连接地址