traceroute 是定位 linux 网络延迟问题的核心工具,需先 ping 判断是否真延迟,再用 -t -p 443 或 mtr 增强探测,结合跳数、ip、延迟突增与 * 出现模式精准定位瓶颈环节。

Linux网络延迟高时,traceroute 是最直接的诊断工具之一,它能帮你逐跳查看数据包经过的每一台路由设备及其响应时间,从而快速定位延迟发生在哪一跳——是本地网络、运营商骨干网、IDC出口,还是目标服务器本身。
确认是否真有延迟,再用 traceroute
别一看到 ping 慢就急着 traceroute。先用 ping -c 5 目标地址 看平均延迟和丢包率。如果延迟波动大(比如 10ms~800ms),或丢包明显(>10%),才值得深入。注意:有些中间节点会禁 ICMP 回复,显示 * * * 不代表一定断连,要看后续跳是否恢复。
用对 traceroute 命令参数
默认 traceroute 基于 UDP,某些防火墙会拦截。更稳妥的方式是:
-
traceroute -T -p 443 目标域名:改用 TCP 协议(-T),指定 443 端口,绕过 UDP 封锁 -
mtr -r -c 20 目标IP:mtr 是 traceroute + ping 的组合,持续探测并统计丢包/延迟,比单次 traceroute 更有参考价值 - 加
-n参数(如traceroute -n google.com)跳过 DNS 反查,避免因 DNS 慢造成误判
看懂 traceroute 输出的关键点
每行代表一跳,格式类似:
3 192.168.100.1 (192.168.100.1) 2.123 ms 1.987 ms 2.054 ms
- 第一列是跳数(hop),从 1 开始;第二列是该跳设备的 IP 或主机名;后面三个时间是三次探测的往返延迟
- 重点关注“延迟突增”和“持续超时”:比如前两跳都是 1–3ms,第三跳突然变成 120ms 且稳定,说明问题大概率出在第三跳设备或其上行链路
- 如果某跳开始全为 * * *,但之后又恢复,可能是该设备禁 ICMP,不用过度担心;但如果之后所有跳都不可达,说明路径在此中断
常见场景与应对建议
- 第1跳延迟高:通常是本机网关(如家用路由器)性能不足或拥塞,尝试重启路由器或检查局域网是否有大量下载/上传
- 第2–4跳延迟高且位于本地 ISP 网络内:联系宽带运营商,提供 traceroute 截图,要求排查城域网或接入层设备
- 中间某跳延迟骤升后保持高位,后续跳延迟回落:大概率是该跳设备(如省网核心路由器)负载高或存在策略限速,需运营商介入
- 最后1–2跳延迟高,但目标端口可通(如 telnet ip 22 成功):问题在目标服务器自身,检查其 CPU、网卡中断、iptables 规则或应用层处理能力









