报错是这么冒出来的。登录和执行小命令都正常,一旦拉取大文件或者打开长页面就卡住,连接看似建立却一直不返回数据。
原因不止一个,得分开看。链路中间某段最大传输单元更小,大包被丢弃。还有一种是路径发现机制被防火墙拦住,无法协商。
不容易想到的是,隧道或者虚拟网络封装后有效载荷变小。
先用不分片标记探测路径最大单元
ping -M do -s 1472 目标IP
接着逐级缩小包长找到临界值
ping -M do -s 1400 目标IP
临时调小本机接口单元
ip link set dev eth0 mtu 1400
末了确认隧道封装开销
ip -d link show eth0
白天有业务在跑,能验证的部分都压到了晚上做。
当时还开着另一个排查窗口,两边日志对照着看才定位到。
恢复的判定其实很直接。大文件传输恢复正常,探测到临界包长时不再丢包,页面加载完整。
这里还有个坑。隧道封装会额外占用几十字节,计算时要把开销算进去;改完最好在两端都验证一次。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。