VPS访问外部服务变慢、TCP连接反复重试时,重传是线索而非结论。原因可能是链路丢包、拥塞、接收端处理慢、网卡队列溢出、路径变化或目标限速。先记录重传趋势,再把内核、网卡、路径和应用时间线对齐。
采样连接与内核计数
ss -s
nstat -az | egrep 'TcpRetransSegs|TcpExtTCPTimeouts|TcpExtTCPSynRetrans'
cat /proc/net/snmp | grep '^Tcp:'累计计数只能说明从启动以来的总量,排查时应固定间隔采样并计算增量。字段名称会随内核版本变化,不要直接套用不匹配的脚本。
检查网卡与软队列
ip -s link
ethtool -S <iface> 2>/dev/null | egrep -i 'drop|discard|error|timeout|miss'
cat /proc/net/softnet_stat虚拟网卡统计项因云平台而异,缺少某字段不代表没有丢包;应结合云平台网卡监控和实例事件。
用MTR和目标对照分层
对自有目标或获授权服务,使用固定时长、低频率MTR记录路径。中间节点不回应ICMP不等于转发丢包,只有后续节点和最终目标同时异常时才更有参考价值。单个目标重传升高,可能是路径或目标限速;多个目标、多个端口同时升高,更像本机或出口问题。
与应用阶段对齐
- 仅新建连接失败:看SYN重传、监听队列和防火墙。
- 已建立连接传输变慢:看TCP重传、拥塞窗口、应用读取和I/O等待。
- 业务P95和错误率同步升高:记录连接建立时间和重传增量,不要只凭Ping下结论。
低风险处理
先降低非关键并发、错开批处理并确认连接是否可复用;没有证据时不要盲改MTU或拥塞控制。若云平台监控显示线路或宿主异常,提交采样时间、实例、目标、MTR和脱敏统计。每次只改一个变量,再观察完整业务周期。
验收清单
- 重传按时间窗口增量记录,字段与内核版本对应。
- 网卡、softnet、MTR、云监控和应用指标可关联。
- 区分单目标路径、本机队列、出口和目标限制。
- 调整后比较P95、错误率、连接时间和重传增量。
- 探测频率、目标范围和日志符合授权与隐私要求。






