非常游戏网
如何在Linux中测试网络延迟 Linux使用ping命令测试的方法

如何在Linux中测试网络延迟 Linux使用ping命令测试的方法

2026-05-29系统教程112400

ping是Linux中测试网络延迟的基础工具,但需用-c限定次数、-W/-i调整超时与间隔、绕过DNS直连IP以准确定位问题,且须结合RTT分布、TTL变化及丢包率综合判断,避免误判。

ping 是 Linux 中最直接、最可靠的网络延迟测试工具,但它不是“一 ping 就准”——参数选错、解读偏差、环境干扰都会导致误判。下面说清楚怎么用、为什么这么用、哪些地方容易翻车。

ping -c 快速获取基础延迟和丢包率

默认不加参数的 ping 会无限发送,不适合脚本或快速判断。必须用 -c 限定次数,否则你得手动 Ctrl+C,还可能漏看结尾统计行。

  • ping -c 4 www.baidu.com:发 4 个包,够看趋势又不至于被抖动带偏
  • 重点看每行末尾的 time=12.3 ms ——这是单次往返时间(RTT),不是平均值
  • 结尾的 4 packets transmitted, 4 received, 0% packet loss 才是真实丢包率,别只扫一眼就关窗口
  • 如果出现 Request timeoutDestination Host Unreachable,说明链路已断,延迟数字失去意义

绕过 DNS 直接 ping IP 地址定位问题层级

ping www.example.com 失败,不等于网络坏了——可能是本地 DNS 解析失败、hosts 被污染、或目标域名 TTL 过期。必须分离 DNS 层和网络层。

  • 先用 dig +short www.example.comnslookup www.example.com 拿到 IP(比如 93.184.216.34
  • 再执行 ping -c 4 93.184.216.34
  • 对比结果:域名 ping 丢包但 IP ping 正常 → DNS 问题;两者都丢包 → 网络或目标服务器问题
  • 注意:某些 CDN 域名返回多个 IP,dig 可能只显示一个,建议加 @8.8.8.8 指定公共 DNS 再查一次

-W-i 控制超时与节奏,避免假阴性

默认 5 秒超时在高延迟链路(如跨国、卫星链路)下会掩盖真实丢包;默认 1 秒间隔又可能错过瞬时拥塞。这两个参数不调,ping 就只是个“能通就行”的玩具。

Docker Desktop(linux)

当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。

  • ping -c 10 -W 2 -i 0.5 1.1.1.1:10 个包、每个最多等 2 秒、半秒发一个 → 更敏感地暴露抖动
  • -W 1 对内网设备很实用(比如测交换机管理口),1 秒无响应基本可判定离线
  • -i 0.2(200ms)配合 -c 50 可模拟轻量洪泛,观察是否出现周期性超时(常见于 QoS 限速)
  • 别用 -f(flood ping)除非你有 root 权限且明确要压测——它不计时、不统计,只刷 .!,新手极易误读

延迟数值本身没意义,要看分布和上下文

time=15.2 ms 看起来很低,但如果 10 次里有 3 次是 time=320 ms,那实际体验就是卡顿。平均值、最小值、最大值、标准差,四个数缺一不可。

  • ping -c 20 target | grep "time=" | awk '{print $7}' | cut -d= -f2 | sort -n 提取全部 time 值并排序,肉眼扫一遍就能发现毛刺
  • 如果最小值 0.3 ms、最大值 480 ms,说明链路存在严重抖动,比单纯“平均 40ms”危险得多
  • ttl 值也能辅助判断:连续几次 ttl=56 突然变成 ttl=55,大概率中间某跳路由发生了变更或负载切换
  • 别拿笔记本 WiFi 下的 ping 结果去评估生产服务器——无线重传、信道竞争、驱动 bug 都会让延迟失真

真正难的不是跑出一行 time=,而是当 ping 显示“0% packet loss”但业务依然超时,你要立刻想到:ICMP 被防火墙限速、目标主机禁 ping、或者问题根本不在三层——这时候该切 mtr 看路径,或用 tcping 测端口级连通性。