You need to enable JavaScript to run this app.
文档中心
文档数据库 MongoDB 版

文档数据库 MongoDB 版

复制全文
下载 pdf
最佳实践
MongoDB 最大连接数最佳实践
复制全文
下载 pdf
MongoDB 最大连接数最佳实践
连接数是影响 MongoDB 实例稳定性的关键资源。合理配置客户端连接池与服务端连接数上限,是保障业务正常运行的基础;而连接数达到上限或出现异常增长时,快速定位根因并采取有效措施,是运维中的关键环节。本文围绕配置、监控与排查,系统讲解连接数的管理方法,帮助您有效管控连接资源,提升实例稳定性。​
背景信息​
连接数管理涉及客户端与服务端两个层面的协同配置。理解以下两个核心参数及其关系,是合理规划连接资源的基础。​
​
维度​
客户端​
服务端​
参数名称​
net.maxIncomingConnections​
作用范围​
限制单个客户端到每个 MongoDB 节点的最大连接数。​
限制单个 MongoDB 实例允许的最大并发连接总数。​
配置方式​
在驱动程序(如 Java、Python)中作为配置项设置。​
通过控制台修改。​
目的​
防止单一客户端占用过多连接资源,同时复用已建立的连接。​
保护服务端资源,避免因连接数过高导致性能下降或系统崩溃。​
默认值​
无​
MongoDB 默认为 65536,实际取值受操作系统限制可能更低。​
​
二者的核心关系在于:所有客户端连接池的总和,不应超过服务端的连接数上限。一旦达到上限,新的连接请求将被拒绝。​
说明​
  • 关于各规格对应的推荐连接数,请参见产品规格。​
  • 关于net.maxIncomingConnections 参数的更多信息,请参见参数支持。​
配置建议​
​
​
客户端连接池配置
服务端连接数配置
​
您可以在连接 URL 中通过 maxPoolSize 参数进行设置(参数名因驱动程序不同可能存在差异,请以对应驱动的官方文档为准)。​
核心原则​
  • 连接池中的连接可被多个请求复用,无需为每个请求新建连接。设置过大会占用过多服务端资源,设置过小则可能导致请求排队等待。​
  • 单客户端建议值:≤ 服务端连接数上限 ÷ 预期客户端数量​
典型场景​
​
典型场景​
连接池建议​
说明​
高并发短事务(如电商大促、秒杀)​
适当上调​
减少频繁建立/关闭连接的开销。​
长事务或资源受限(如数据分析、批量导入)​
适当下调​
避免连接堆积。​
副本集实例或分片集群实例​
按节点数计算​
每个节点独立建池,实际连接数 = maxPoolSize × 节点数。​
​
配置示例​
​
mongodb://user:password@host:3717/admin?maxPoolSize=100​
​
​
监控与告警​
监控指标是判断连接数配置是否合理、及时发现异常的基础。您可以通过控制台查看实例的连接数相关指标。具体操作步骤,请参见查看监控数据。监控指标的详细说明,请参见监控指标说明。​
查看连接数​
您可以通过在 MongoDB Shell 中执行以下命令,快速了解实例当前的连接数使用情况。连接方法,请参见通过 MongoDB Shell 工具连接实例。命令用法,请参见 db.serverStatus()。​
​
db.serverStatus().connections​
​
返回结果示例如下。​
​
{​
"current" : 14, // 当前已建立的连接数​
"available" : 386, // 剩余可用连接数​
"totalCreated" : 65,​
"active" : 3 // 当前活跃连接数​
}​
​
建议您重点关注 current 和 available 参数。如果 available 持续偏低,或者 current 在某个时间点突然大幅上升,说明连接资源出现异常,需进一步排查。​
定位异常连接来源​
当连接数出现异常增长或可用连接数不足时,您需要进一步判断是哪个客户端占用了过多连接,可执行以下命令。命令用法,请参见 db.currentOp()。 ​
​
db.currentOp({"active" : true})​
​
返回结果中的 client 字段显示了客户端的 IP 地址和端口号,便于您定位到具体的客户端来源。​
配置告警规则​
您可以在控制台中为连接使用率配置告警规则,以便在连接数异常增长时第一时间获知。告警阈值可参考如下设置:​
  • 连接使用率 ≥ 80% :触发预警,建议关注增长趋势。​
  • 连接使用率 ≥ 90% :触发紧急告警,建议立即处理。​
您也可以根据自身业务特点自定义阈值。具体操作步骤,请参见设置告警。​
连接数超限处理​
分片集群实例​
分片集群实例连接数超限的排查与处理方法,请参见如何排查并处理分片集群实例连接数耗尽导致的连接失败。​
副本集实例​
副本集实例的处理逻辑与分片集群基本一致,区别在于副本集没有 Mongos 节点,连接直接到达主节点或从节点。​
您可以通过重启节点来临时释放所有连接,快速恢复业务。重启后请尽快排查连接数超限的原因,避免问题反复出现。​
注意​
重启操作会导致节点出现约 30 秒的闪断,请提前做好业务安排并确保应用具备重连机制。​
  • 您也可以通过在 MongoDB Shell 中执行 db.currentOp() 命令,检查是否有长时间未完成的操作或某个 IP 占用过多连接,如有则执行db.killOp(<opid>) 终止。​
  • 如果连接都是正常业务请求,可依次尝试以下方式:​
  • 调整客户端连接池:确保 应用实例数 × maxPoolSize(默认 100)小于实例推荐连接数。副本集架构下,MongoClient 会为每个节点独立建池,实际连接数 = maxPoolSize × 节点数(参见典型场景说明)。可通过设置 maxIdleTimeMS(默认 0,即不限制)让空闲连接自动关闭。更多连接池调优建议,请参见调整连接池设置。​
  • 调大服务端连接上限:在控制台适当调大 net.maxIncomingConnections 参数值。​
  • 升级实例规格:若业务需求超出当前规格上限,可通过变更配置升级节点规格。具体操作请参见变更实例配置。​
说明​
升级实例规格会产生额外费用,具体请参见计费项与价格,请您根据业务需求合理评估。​
最近更新时间:2026.07.24 19:08:20
这个页面对您有帮助吗?
有用
有用
无用
无用