访问服务器变慢、丢包或者延迟高时,单纯“感觉卡”很难定位问题。本文介绍常用的服务器网络测速与路由追踪工具:mtr、traceroute 用于查看路由和丢包,iperf3、speedtest-cli 用于测试带宽,并说明如何整理结果发送给技术支持,适用于 Linux(Debian/Ubuntu、CentOS/Rocky/AlmaLinux)与 Windows。
Debian / Ubuntu:
apt update
apt install -y mtr-tiny traceroute iperf3 speedtest-cli
CentOS / Rocky / AlmaLinux(speedtest-cli 通过 pip 安装):
dnf install -y mtr traceroute iperf3 python3-pip
pip3 install speedtest-cli
CentOS 7 请把 dnf 换成 yum。
mtr 结合了 ping 和 traceroute,会持续向每一跳发包并统计丢包率与延迟,是排查线路问题最有用的工具。
mtr -rwzbc 100 8.8.8.8
参数说明:-r 报告模式,-w 宽格式不截断主机名,-z 显示 ASN,-b 同时显示 IP 和主机名,-c 100 发送 100 个包。如果目标屏蔽 ICMP,可改用 TCP 探测:
mtr -rwc 100 -T -P 443 www.example.com
traceroute -n 8.8.8.8
traceroute -n -T -p 80 www.example.com
Windows 本地电脑可使用系统自带命令(-d 不解析主机名)。pathping 会在追踪后统计每跳丢包,效果类似 mtr:
tracert -d 203.0.113.10
pathping -n 203.0.113.10
iperf3 可以精确测试两端之间的吞吐量,不受第三方测速节点影响。在服务器上启动服务端:
iperf3 -s
在另一台机器上作为客户端连接(-P 4 表示 4 个并发流,-R 测试反方向):
iperf3 -c 203.0.113.10 -P 4 -t 30
iperf3 -c 203.0.113.10 -P 4 -t 30 -R
iperf3 默认使用 TCP 5201 端口,测试前请在防火墙放行,测试完成后按 Ctrl+C 关闭服务端。
speedtest-cli --secure
speedtest-cli --list | head -n 20
speedtest-cli --secure --server 12345
--list 可列出附近节点,再用 --server 指定节点 ID。测速结果受节点负载影响较大,建议多测几个节点取参考值。
为了让技术支持快速定位问题,请尽量提供双向数据:从你本地到服务器的 mtr(或 WinMTR / pathping),以及从服务器到你本地公网 IP 的 mtr。可将结果保存为文本:
mtr -rwzbc 100 你的本地公网IP > mtr-from-server.txt
提交工单时附上:服务器 IP、你的本地公网 IP 与运营商、发生问题的时间段、上述测试的文本结果(尽量用文本而非截图)。
如果最终目标没有丢包,中间跳的丢包通常是该路由器不回应探测,可以忽略;只有从某一跳开始一直到终点都丢包,才说明线路有问题。
公共测速节点本身可能拥堵或限速。建议用 iperf3 在两台已知性能良好的机器间测试,并在不同时间段多次测量。
在变慢时段运行 mtr 并记录时间,与正常时段的结果一起提交,便于对比定位拥堵节点。
如仍无法解决,可提交工单联系 IMIDC 7×24 技术支持,并附上上述测试结果。