首页/数据/Redis 进阶速查/MTU 与分片重传问题
性能与排障129 条

MTU 与分片重传问题

跨专线、隧道(VPN/overlay)环境 MTU 变小,未适配时大包分片导致重传与吞吐下降;用 ping 带 DF 位探测路径 MTU。

Redis 进阶速查数据更新于 2026-10-13

MTU 与分片问题

跨专线、VPN 或容器 overlay 网络时,路径 MTU 可能小于常规的 1500 字节:未适配的环境里大包会被分片甚至直接丢弃,表现为重传增多、吞吐下降,而小请求完全正常。探测方式是发送设置了不分片(DF)位的 ping 包,逐步调整包大小找到路径能通过的上限。

基本信息

探测方式Linux 用 ping -M do -s 大小;Windows 用 ping -f -l 大小
判断依据大包不通小包通,重传明显增多
典型场景跨专线、VPN、隧道与容器 overlay 网络
适配手段调整接口 MTU,或通过 MSS 钳制间接生效
常见现场同一应用在容器内慢、在宿主机正常

典型使用场景

  • 跨专线访问:链路 MTU 小于 1500 时大响应频繁分片
  • 隧道环境:封装开销占用字节,可用载荷被压缩
  • 容器网络:overlay 封装让可用 MTU 变小,容器内往往不感知
  • 吞吐异常排查:小包正常而大包慢时,先测路径 MTU
  • 迁移后验证:新环境网络配置不同,上线前重新探测一次

探测与核查

探测与核查
ping -M do -s 1472 remote-host   # 1472 加 28 字节头部等于 1500,禁分片探测
ping -M do -s 1400 remote-host   # 不通就逐步减小,找到可通过的上限
ping -f -l 1472 remote-host      # Windows 对应写法
ip link show                     # 查看各接口当前 MTU
sysctl net.ipv4.tcp_mtu_probing  # 确认是否启用 MTU 探测

现象对照

现象可能原因验证方式
小包通大包不通路径 MTU 小于发送端假设用 DF 位 ping 探测
重传率高吞吐低分片丢失或两侧 MTU 不一致对比两侧 mtu 与重传统计
容器内慢宿主机正常overlay 封装缩小可用 MTU容器内探测路径 MTU
只有大响应超时响应分片被中间设备丢弃按包大小分档测试
容器 overlay 网络是 MTU 问题的常见现场:宿主机看起来一切正常,容器里的应用却频繁超时,检查容器网络接口的 MTU 通常能找到线索。
MTU 改错会让小包正常、大包全丢:这类故障表现时好时坏,先改回原值恢复业务,再按探测结果逐步调整。

易错点

  • 把吞吐下降归因 Redis:忽略链路 MTU 失配,服务端参数改了一圈没有效果
  • MTU 改错:小包正常大包全丢,业务表现时好时坏,定位难度大
  • 只在宿主机测:容器 overlay 的可载荷更小,宿主机正常不代表容器正常
  • 不做两侧对照:两端 MTU 不一致的问题只在大包上暴露,单侧排查容易漏掉

数据来源与参考

  • Redis 官方实践:网络排查
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌