当前位置:首页 > 综合

快速ping1000个包命令

直接甩命令:Windows下想快速ping 1000个包,快速用 ping -n 1000 目标地址,个包Linux/macOS下用 ping -c 1000 目标地址。命令别小看这个数字,快速默认ping只发4个包,个包测个延迟都勉强,命令1000个包才能真正看出丢包和抖动。快速

我平时排查网络问题,个包第一步就是命令看丢包率。4个包丢1个就是快速25%丢包,这数据毫无意义——可能只是个包刚好撞上一次拥塞。1000个包丢1个,命令0.1%,快速这才有参考价值。个包上周帮同事看视频会议卡顿的命令问题,他ping了网关4个包全通,觉得没问题。我让他跑1000个,结果丢了37个,3.7%的丢包率。交换机端口有故障,换了个口就正常了。

Windows下的具体操作

打开cmd,输入:

ping -n 1000 192.168.1.1

默认每个包间隔1秒,1000个包要跑16分40秒。太慢了。加个 -w 参数改超时没用,间隔是固定的。想快只能用 -l 改包大小?也不对。Windows的ping没有Linux那种 -i 改间隔的参数,这是硬伤。

有个变通办法:用for循环并发。但那样输出会乱。我一般就让它跑着,干别的事去。或者用 -n 100 先快速看一眼,有问题再跑1000。

想同时看时间戳?Windows的ping不带这个。得用 ping -n 1000 目标 > ping_log.txt 重定向到文件,然后自己分析。或者装个gping、httping之类的工具。但那些不是系统自带,有些环境不让装。

Linux/macOS更灵活

Linux下:

ping -c 1000 -i 0.2 8.8.8.8

-i 0.2 把间隔改成0.2秒,1000个包只要200秒,3分多钟跑完。注意普通用户最小间隔是0.2秒,root可以更小。想更快就 sudo ping -c 1000 -i 0.01,10秒跑完,但可能被目标限速或者触发防护。

macOS的ping参数和Linux基本一样,但 -i 最小也是0.2秒。另外macOS的ping默认会一直跑,必须加 -c 指定次数,不然就无限循环了。

我习惯加 -D 参数打印时间戳(Linux),这样丢包的时候能看出是什么时间点丢的。有次排查晚高峰卡顿,发现丢包全集中在19:00-20:00,其他时间正常。这就直接指向了带宽拥塞,而不是线路故障。

结果怎么看

跑完之后看最后几行:

--- 8.8.8.8 ping statistics --- 1000 packets transmitted, 997 received, 0.3% packet loss rtt min/avg/max/mdev = 12.3/15.7/89.2/4.1 ms

丢包率超过1%就不太正常了,除非是无线网络。mdev(抖动)比avg还大说明网络不稳定,一会儿快一会儿慢。max和min差距超过10倍也得注意。

有线网络理想状态是0%丢包,mdev在1ms以内。WiFi的话1-2%丢包可以接受,但mdev通常较大,5ms以上很常见。

1000个包这个数量也有讲究。100个包只能测100秒,晚高峰的波动可能刚好错过。10000个包又太久,而且很多防火墙会对大量ICMP做限制。1000个包大约16分钟(默认间隔),覆盖一个典型的网络使用周期,够用又不至于太慢。

最后提醒一句:有些服务器禁ping,或者对ICMP限速。你ping 1000个可能只收到几十个回复,这不代表网络有问题,只是对方不让你ping。测之前先ping 4个看看通不通,通了再跑1000。

分享到: