2024年如何解决ping第一包时间过长的情况

泥小猴系统教程网 2025-01-18 17:07:59 54阅读
一、现象:

公司互联网域的几台主机在ping一个合作方提供的域名时,发现在ping 第一个包时,时间特别长,后面第2--n包开始正常。直接ping 该域名对应的ip 没这个问题。在使用host -a 、dig、nslookup 、route、nscd -i hosts等轮番上软分析处理了一通后,问题依旧。

二、验证问题:

本地nscd 的 DNS cache都清理了还不行,而且本机上又没有bind DNS服务配置。考虑到ping 里面有一个 -n 参数,即不对域名进行反解析,这里将只ping一个包加-n与不加-n的结果进行了比对,具体如下:

www.361way.com:~ # time ping -n spay2.shuqiapi.com -c 1
PING sqsdou.wx.ucweb.com (211.103.25.41) 56(84) bytes of data.
64 bytes from 211.103.25.41: icmp_seq=1 ttl=50 time=10.7 ms
--- sqsdou.wx.ucweb.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 10.705/10.705/10.705/0.000 ms
real 0m0.015s
user 0m0.000s
sys 0m0.000s
www.361way.com:~ # time ping spay2.shuqiapi.com -c 1
PING sqsdou.wx.ucweb.com (211.103.25.41) 56(84) bytes of data.
64 bytes from 211.103.25.41: icmp_seq=1 ttl=50 time=10.6 ms
--- sqsdou.wx.ucweb.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 10.640/10.640/10.640/0.000 ms
real 0m18.172s
user 0m0.000s
sys 0m0.000s

登录后复制

发现加-n 时real 只用了0.015s,几乎是立即回包;而不加 -n时,第一个包要使用18.172s 才有回包。

2024年如何解决ping第一包时间过长的情况

出现该问题的原因是什么呢?:

2024年如何解决ping第一包时间过长的情况

这是因为 ping 的时候遇到 DNS 反向解析问题,默认情况下,当 ping 一个域名的时候,ping 从域名服务商得到域名的 IP 地址,然后 ping 访问这个 IP 并试图解析成一个名字,因为我们不提供 DNS 服务也没有 DNS 反向解析,所以导致 ping 需要等到 DNS time out 才返回,这样看上去 ping 回应很慢。

ping 是这样工作的:ping 有两个线程在执行,一个用来发包,一个用来收包和打印结果,发包的线程不停的发,没有问题,问题出在收包的线程,这个时候收包线程是被阻塞的,所以收包线程要等到 DNS 超时后才打印出 ping 的结果,而这个时候结果是正确的,因为结果本来就是对的,只不过因为被阻塞而推迟了显示的时间而已,所以造成 ping 域名间隔很长的假象。如果用ping -n 关闭掉 DNS 解析就不会有这种问题了。

由于本地/etc/resolv.conf 文件里配置的DNS 主机我并有查看权限,所以结合上面的理论,让业务侧去找人分析查看了DNS 的配置是不是有问题。

文章版权声明:除非注明,否则均为泥小猴系统网网络收集而来,如有任何问题请联系站长。

目录[+]