长时统计 ping 是干什么的
几十个包的 ping 只能证明此刻能通,证明不了链路稳定。-c 加大包数、-i 放慢间隔、-D 给每行加上时间戳,三者组合起来就变成一次可复盘的质量观测:既能看到总丢包率,也能把丢包摊到时间轴上,判断它是随机发生、周期性发生还是与业务高峰同步。这是排查偶发卡顿、随机超时的第一手数据。
基本信息
| 核心三参数 | -c 总包数、-i 发包间隔、-D 每行 UNIX 时间戳 |
|---|---|
| 典型配置 | 每秒 1 到 5 包,持续半小时到数小时,具体按故障频率决定 |
| 输出处理 | 重定向到文件或配合 tee,长测必须留档才能复盘 |
| 平台差异 | Windows 用 ping -t 长测,但没有时间戳参数,需靠外部脚本计时 |
典型使用场景
- 偶发断线:用户描述『每隔一会儿卡一下』,先挂长测看丢包是否真的存在
- 割接验证:变更后连续观测一小时,确认时延与丢包回到基线水平
- 带宽争抢排查:丢包集中在备份或批处理时段,可指向链路拥塞
- 无线与专线验收:用长时统计给出丢包率数字,而不是凭感觉描述
- 复现取证:故障再次出现时,日志里有精确到秒的丢包记录
长测并落盘
长测并落盘
ping -D -i 0.5 -c 3600 10.0.0.5 | tee /tmp/ping-1h.log # 半小时、每秒 2 包、带时间戳
ping -q -i 0.2 -c 3000 10.0.0.5 | tail -2 # 只要最后的统计结论
tail -f /tmp/ping-1h.log | grep -E 'no answer|timeout' # 实时只盯异常行
grep -c timeout /tmp/ping-1h.log # 统计总丢包数
grep timeout /tmp/ping-1h.log | awk '{print strftime("%H:%M", $1)}' | uniq -c | head # 按分钟看丢包密度丢包模式判读
| 时间分布特征 | 常见指向 | 下一步动作 |
|---|---|---|
| 周期性出现,如整点或每五分钟 | 定时任务、备份占满带宽、路由协议震荡 | 对齐定时任务与备份窗口的时间 |
| 与业务高峰同步 | 链路拥塞、队列丢包、上联带宽不足 | 在高峰时段用 mtr 看哪一跳开始丢包 |
| 完全随机且短促 | 物理层误码、光衰、水晶头接触不良、无线干扰 | 查网卡错误计数与光模块收发光 |
| 只影响特定客户端或来源 | 客户端侧问题、地址转换、无线终端、代理差异 | 换一台机器与一条出口做对照测试 |
| 丢包与高时延同时出现 | 链路拥塞或中间队列堆积 | 结合带宽实测与业务并发量判断 |
-D 输出的第一列是 Unix 秒,可以带小数;配合 awk 与 strftime 就能把丢包摊到分钟或小时维度,几行命令即可画出时间分布。
观测本身也会占用资源:每秒 2 包持续一天约产生十七万行日志,务必设置日志轮转与磁盘告警,必要时用 -q 只保留汇总。