mtr比ping和traceroute更适合查丢包和延迟抖动,因其融合二者功能:一边持续发包做路径探测,一边对每一跳统计丢包率、rtt均值/最大值/标准差,能暴露间歇性丢包和抖动问题。

直接用 ping 就能快速测出服务器之间的延迟和丢包率,这是最常用、最可靠的第一步。它不依赖额外服务,只要目标主机响应 ICMP,就能反映端到端的基本质量。
基础测试:用 ping 看延迟和丢包
在源服务器终端执行:
- ping -c 10 www.example.com —— 发送 10 个包,自动结束并输出统计
- 关注每行中的 time=xx.x ms,这是单次往返延迟
- 末尾统计行如 10 packets transmitted, 10 received, 0% packet loss,百分比就是丢包率
- 若目标是另一台内网服务器,优先用 IP(如 ping -c 10 192.168.5.20),避免 DNS 干扰
定位问题范围:分段 ping 排查
丢包或高延迟不一定是远端的问题,得从近到远逐步验证:
- ping 127.0.0.1 —— 检查本机协议栈是否正常(应无丢包、延迟
- ping 网关 IP(如 192.168.1.1) —— 判断局域网或出口路由器是否有异常
- ping 外网 IP(如 8.8.8.8) —— 隔离 DNS,确认 ISP 或骨干网是否稳定
- 最后再 ping 目标服务器域名或 IP —— 对比前几步,明确问题发生位置
深入分析路径:用 mtr 查哪一跳丢包
ping 只告诉你“整体有没有丢”,mtr 能告诉你“在哪一跳开始丢”:
- 安装后运行:mtr -r -n -c 50 192.168.5.20(-r 报告模式,-n 跳过 DNS,-c 50 累积 50 次探测)
- 重点看输出中每跳的 Loss% 列:某跳显示高丢包,但下一级恢复为 0%,大概率是该节点限速 ICMP(非真实故障)
- 同时观察 Best/Avg/WRST 和 StDev,数值波动大说明抖动严重,即使平均延迟不高也影响应用体验
检查底层硬件丢包:看网卡真实收发状态
有些丢包 ping 不出来,因为发生在网卡驱动或内核接收队列层面:
- 运行:cat /proc/net/dev | grep eth0(把 eth0 换成你实际网卡名)
- 查看 Recv 列下的 drop、errs、overrun 是否持续增长
- 更细粒度检查:ethtool -S eth0 | grep -i "drop\|error"
- 如果 rx_dropped 明显上升,可能是 ring buffer 溢出、中断延迟或驱动兼容性问题











