100 Mbps是理论下限,因MongoDB官方规定仲裁节点仅需100Mbps(仅传输心跳与投票消息,单次

生产环境副本集节点间网络带宽最低需 100 Mbps,但实际推荐 1 Gbps(千兆)及以上。
为什么 100 Mbps 是理论下限?
这个数值来自 MongoDB 官方对仲裁节点(Arbiter)的明确要求:其网络带宽只需 100Mbps。仲裁节点不传输数据,只收发心跳(heartbeat)和投票消息,单次心跳包不足 1 KB,每 2 秒一次,峰值带宽占用远低于 1 Mbps。
但注意:这仅适用于纯仲裁节点。只要节点参与数据复制(即主节点或从节点),100Mbps 就严重不足。
- 流式复制(MongoDB 4.2+ 默认协议)会持续推送 oplog 变更块,写入压力大时可轻松突破 50 Mbps
- 全量同步(initial sync)阶段,从节点需拉取整个数据集,若数据量达数十 GB,
100Mbps链路将导致同步耗时数小时甚至失败 - 延迟节点(delayed secondary)或备份节点在后台 dump 数据时,也会突发大量网络流量
生产中真正该看的指标是「复制滞后」而非带宽数字
带宽只是瓶颈之一,真正影响副本集稳定的是端到端复制延迟。当 rs.status().members[n].optimeDate 与主节点时间差超过 10 秒,就可能触发选举超时(electionTimeoutMillis 默认 10000),导致不必要的主从切换。
常见诱因包括:
- 网络 RTT > 20 ms(跨机房未专线直连时常见)
- 带宽被其他服务挤占,导致 TCP 重传率升高
- 从节点磁盘 I/O 跟不上复制流速(尤其 journal 写入慢时)
如何验证当前带宽是否够用?
别只查网卡配置,要实测关键路径:
- 用
iperf3 -c <target_ip></target_ip>在主、从节点间双向压测,观察是否稳定达到标称带宽的 80%+ - 监控
netstat -s | grep "retransmitted",重传率 > 0.5% 就说明链路质量差,带宽再高也白搭 - 在从节点执行
db.getSiblingDB("local").oplog.rs.stats(),检查avgObjSize和count,估算每秒 oplog 流量(单位:字节/秒)
如果估算值持续 > 80 Mbps,就该升级物理链路或优化写入模式(如合并小更新、避免高频 $inc)了。
容易被忽略的一点:跨可用区部署时,云厂商的“内网带宽”常是共享带宽,且默认限速。务必确认你拿到的是独占的、可承诺的带宽,而不是“最高可达”的虚标值。











