抓包看 TCP 重传,比 ping 有用
用户说“访问慢”,ping 延迟 150ms 正常,mtr 也不丢包。这时候该看 TCP 层的重传。
tcpdump -i eth0 -s 0 -w /tmp/cap.pcap 'tcp port 443 and host 1.2.3.4'
tshark -r /tmp/cap.pcap -q -z io,stat,1,"COUNT(tcp.analysis.retransmission)tcp.analysis.retransmission"
重传率超过 1% 就足以让单个 TCP 流的吞吐掉一半,而 ping 完全看不出来——ICMP 是小包,不触发拥塞窗口。
另一个容易忽略的是乱序。tcp.analysis.out_of_order 多,说明路径上有负载均衡把包打散了,接收端要重排,效果和丢包差不多。定位到具体方向(上行还是下行)再决定是换线路还是调拥塞控制。