检测服务器网络延迟与连通性的时候, 以下是当前运维与开发场景中最常用的5款ping检测工具, Windows系统自带ping, Linux系统自带ping, 还有curl, 加上traceroute, 以及gname.xin提供的在线批量ping检测服务。

一、各工具操作方式​

1. Windows系统ping

打开CMD或PowerShell,输入:

ping <目标IP或域名> -t

使用参数-t的意思是, ping指令会一直运行, 直到你通过同时按住Ctrl键和C键的方式来手动切断程序。而加入参数-n 10的作用是, 规定系统只向外发送总共有10个的数据包, 在这之后进程就会自动结束。

2. Linux系统ping

在终端那里进行输入的举动。

使用命令来进行操作。

参数-c 4表示, 在发送了4个包之后, 就会自动停止运行。这个用法适合用来做脚本化的检测工作。而-i 0.5则是把发包的间隔时间设定为0.5秒, 这样做能够用于进行更精细化的延迟采样操作。

3. curl延迟检测

如果目标服务器把ICMP协议给禁用了, 也就是ping的时候请求被防火墙拦截住了的情况里, 那么就要去用HTTP协议来做替代这件事。

使用curl这个命令服务器ping检测工具服务器ping检测工具,然后加上-o参数, 后面跟着/dev/null, 接着添加-s参数, 再添加-w参数, 后面跟着%{time_total}还有\n, 最后指定那个网址是http://<目标地址>这段代码看起来就像是在测量响应时间。

该数值表示的是完整的请求处理时间, 其计算单位是秒。与使用ping工具进行的测试相比, 这一指标能够更为真实地反映出业务层面的实际延迟情况。

4. traceroute / tracert

服务器ping检测工具推荐:5款常用工具操作与参数详解(图1)

如果要弄清楚定位延迟具体是发生在哪一个属于网络层级的节点处。

Windows:tracert <目标>

Linux:traceroute <目标>

它会显示从你出发的每一跳路由路径, 并且列出每一跳的延迟情况。这样就可以让你快速地判断出来问题到底是出现在你的本地网关那里, 还是出现在运营商那里, 又或者出现在那个目标服务器的地方。

5. gname.xin 在线批量检测

对于那些需要去同时监测多少台服务器, 还有那个多节点可用性的场景而言, gname.xin提供的是浏览器端批量ping测试。它支持自定义发包数量、间隔以及超时阈值。结果是以表格形式呈现的。你不需要在服务器端部署什么额外脚本。这种做法非常适合用来快速排查跨地域网络质量的差异问题。

二、常用参数速查​

邢台市重点项目建设促进中心

参数 作用 示例
-n / -c 指定发包数量 ping -n 20 1.1.1.1
-l / -s 设置包大小(字节) ping -l 1472 1.1.1.1
-i / -I 设置发包间隔(秒) ping -i 1 1.1.1.1
-w 超时时间(毫秒,仅Windows) ping -w 1000 1.1.1.1
-f 发送完成即停止(仅Windows) ping -f 1.1.1.1

Q:ping通但网页打不开怎么办?

ICMP协议能够通, 并不代表TCP协议的80或者443端口也一定能通的。请改用curl命令或者使用telnet 443这个方式, 来测试一下目标端口是否可以正常被访问到, 然后还得再去检查一下那个服务器上的防火墙以及SELinux的相关规则是否存在问题。

Q:ping延迟忽高忽低(如10ms↔200ms)怎么排查?

先要用tracert这个工具去定位延迟出现跳变的那个具体位置是在哪一跳;如果情况集中在某个运营商的节点上面, 那么大概率的中间链路是发生了拥塞或者丢包的问题;这种情况你可以联系ISP服务提供商, 或者改用不同的线路来验证一下。

Q:生产服务器能否直接跑ping脚本?

这个是可以的, 但是建议大家去限制那个发包的频率和总的包数, 具体的说就是让间隔时间至少有一秒以上, 再一个就是要控制包的总数, 这样做呢就是为了避免出现那种ICMP洪水攻击一样的效果, 如果是要做批量监测的话, 更推荐去用专门的探针机器来进行操作, 不建议直接在那种正在跑业务的服务器本身上去执行这类操作。

上面的工具和参数, 这些内容, 它们是能够覆盖这个从单个的一次性的快速的验证, 一直到那个持续的批量的监测的这个完整的链条的, 这些是可以根据自己的实际情况的场景来去进行组合和使用的。