核心功能说明
服务器ping检测工具, 这个工具是用来测试目标服务器和咱们本地主机之间的网络是不是连通的, 还有看看往返延迟是多少。它背后的原理是什么, 其实就是发送一种叫做ICMP Echo Request的数据包。如果对方主机能被找到的话, 它就会回传一个叫做ICMP Echo Reply的东西。
然后这个工具就根据这些来回的信息, 去算一算丢包率是多少, 还有最小的响应时间、平均的响应时间和最大的响应时间是多大。这一步操作, 它是网络故障排查的第一步, 也是服务器部署验证的第一步, 还是CDN节点探测的第一步。
常用工具分类
命令行工具(本地执行):
在Windows系统的环境下, 用户可以使用ping命令, 该命令是系统自带的功能。此外, 还可以使用tracert来进行路由跟踪操作。Pathping这个选项可以用来生成有关延迟和丢包的综合性报告。
Linux/macOS系统:ping命令,traceroute/tracepath(路由跟踪),mtr(交互式综合诊断)
跨平台脚本:PowerShell的Test-NetConnection、Python的ping3库
在线检测平台(无需安装):
各大云计算提供商都给出了网络诊断用的控制台这种功能, 阿里云是这样做的, 腾讯云也是这样做, 华为云同样也做了这个内置的东西。
该第三方分布式探测平台, 支持从全球各个节点同时发起ping请求, 从而获取地域化的延迟数据。
有些综合型的网络工具网站, 比如
标准操作步骤(以Linux为例)
1. 执行基础ping:ping -c 10 <目标IP或域名>服务器ping检测工具服务器ping检测工具,发送10个包,观察返回的packets transmitted, packets received, packet loss及rtt min/avg/max/mdev。
2. 我们需要调整参数定位问题, 具体使用代码 ping -i 0.5 -s 1024 <目标> , 把间隔设置为0.5秒, 把包大小设置为1024字节, 这样做可以排除那种小包通过大包被防火墙规则拦截的干扰情况。
3. 把路由跟踪这个事情结合起来去看, 你可以通过运行 traceroute 后面跟着那个目标地址的方式, 或者是用 mtr 后面跟上目标地址这种方式去进行操作, 然后就可以一步一步地往下走, 从而把导致了延迟突然变高或者连接中断的那个具体的网络节点给定位出来。
判定标准:丢包率=0%且平均延迟在正常范围内(同城<10ms、跨城<30ms、跨国<150ms)为正常;丢包率>5%或出现*(超时)需进一步排查。
高频疑难与解决
注意事项
有一部分云主机会直接把ICMP响应给关掉, 所以你用ping命令去测, 结果发现不通, 但这并不代表服务器的硬件就死掉了, 必须得接着再用端口探测的办法, 比如通过telnet这种工具, 或者用nc这个工具, 再或者是用Test-NetConnection -Port 80这类方式来综合看一下总的情况才能下结论。
高频率ping(间隔<100ms)会触发目标主机限流,生产环境检测建议间隔≥1秒、次数≤100。
当遇到需要检查大量服务器这样的情况的时候, 可以写个程序去循环地打个包看看通不通, 并且把结果存到文件里去, 再一个办法是把事情交给专门的监督系统去管。具体来说就是用Prometheus加上blackbox_exporter这个东西来做经常性的测试。
上面说的那些内容, 就是服务器ping检测工具的核心使用方法, 还有故障判定路径是怎样的, 只要大家按照上面的步骤去进行一步一步的操作, 那么就肯定是可以完成那个从基础的连通性验证到深层链路定位的这个完整检测闭环的。


