- 文档首页
文档数据库 MongoDB 版
最佳实践
MongoDB 最大连接数最佳实践
MongoDB 最大连接数最佳实践
连接数是影响 MongoDB 实例稳定性的关键资源。合理配置客户端连接池与服务端连接数上限,是保障业务正常运行的基础;而连接数达到上限或出现异常增长时,快速定位根因并采取有效措施,是运维中的关键环节。本文围绕配置、监控与排查,系统讲解连接数的管理方法,帮助您有效管控连接资源,提升实例稳定性。
连接数管理涉及客户端与服务端两个层面的协同配置。理解以下两个核心参数及其关系,是合理规划连接资源的基础。
二者的核心关系在于:所有客户端连接池的总和,不应超过服务端的连接数上限。一旦达到上限,新的连接请求将被拒绝。
说明
- 关于net.maxIncomingConnections 参数的更多信息,请参见参数支持。
您可以在连接 URL 中通过 maxPoolSize 参数进行设置(参数名因驱动程序不同可能存在差异,请以对应驱动的官方文档为准)。
核心原则
- 连接池中的连接可被多个请求复用,无需为每个请求新建连接。设置过大会占用过多服务端资源,设置过小则可能导致请求排队等待。
- 单客户端建议值:≤ 服务端连接数上限 ÷ 预期客户端数量
典型场景
配置示例
服务端配置不区分业务场景,统一遵循以下原则。
核心原则
服务端上限应大于所有客户端连接池的总和:net.maxIncomingConnections ≥ Σ(各客户端 maxPoolSize)
注意
net.maxIncomingConnections 参数的实际生效值还受操作系统 ulimit -n(单进程可打开的最大文件数)限制。因此,如果该值过低,即使调高 net.maxIncomingConnections,也无法达到预期效果。
配置示例
10 个应用客户端,每个连接池设为 100,客户端总需求为 10 × 100 = 1000。如果服务端上限为 500,总需求将超过上限,部分客户端会连接失败,并收到 TooManyConnections 错误。
监控指标是判断连接数配置是否合理、及时发现异常的基础。您可以通过控制台查看实例的连接数相关指标。具体操作步骤,请参见查看监控数据。监控指标的详细说明,请参见监控指标说明。 返回结果示例如下。
建议您重点关注 current 和 available 参数。如果 available 持续偏低,或者 current 在某个时间点突然大幅上升,说明连接资源出现异常,需进一步排查。
当连接数出现异常增长或可用连接数不足时,您需要进一步判断是哪个客户端占用了过多连接,可执行以下命令。命令用法,请参见 db.currentOp()。 返回结果中的 client 字段显示了客户端的 IP 地址和端口号,便于您定位到具体的客户端来源。
您可以在控制台中为连接使用率配置告警规则,以便在连接数异常增长时第一时间获知。告警阈值可参考如下设置:
- 连接使用率 ≥ 80% :触发预警,建议关注增长趋势。
- 连接使用率 ≥ 90% :触发紧急告警,建议立即处理。
您也可以根据自身业务特点自定义阈值。具体操作步骤,请参见设置告警。 副本集实例的处理逻辑与分片集群基本一致,区别在于副本集没有 Mongos 节点,连接直接到达主节点或从节点。
您可以通过重启节点来临时释放所有连接,快速恢复业务。重启后请尽快排查连接数超限的原因,避免问题反复出现。 注意
重启操作会导致节点出现约 30 秒的闪断,请提前做好业务安排并确保应用具备重连机制。
- 调整客户端连接池:确保 应用实例数 × maxPoolSize(默认 100)小于实例推荐连接数。副本集架构下,MongoClient 会为每个节点独立建池,实际连接数 = maxPoolSize × 节点数(参见典型场景说明)。可通过设置 maxIdleTimeMS(默认 0,即不限制)让空闲连接自动关闭。更多连接池调优建议,请参见调整连接池设置。
- 调大服务端连接上限:在控制台适当调大 net.maxIncomingConnections 参数值。
- 升级实例规格:若业务需求超出当前规格上限,可通过变更配置升级节点规格。具体操作请参见变更实例配置。
说明
升级实例规格会产生额外费用,具体请参见计费项与价格,请您根据业务需求合理评估。 最近更新时间:2026.07.24 19:08:20