如何解决ping第一包时间过长的情况
来源:Linux就该这么学
时间:2024-12-29 21:58:13 461浏览 收藏
怎么入门文章编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何解决ping第一包时间过长的情况》,涉及到,有需要的可以收藏一下
公司互联网域(说白了就是可以连外网的vlan区域的主机)的几台主机在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 才有回包。
出现该问题的原因是什么呢?
这是因为 ping 的时候遇到 DNS 反向解析问题,默认情况下,当 ping 一个域名的时候,ping 从域名服务商得到域名的 IP 地址,然后 ping 访问这个 IP 并试图解析成一个名字,因为我们不提供 DNS 服务也没有 DNS 反向解析,所以导致 ping 需要等到 DNS time out 才返回,这样看上去 ping 回应很慢。
ping 是这样工作的:ping 有两个线程在执行,一个用来发包,一个用来收包和打印结果,发包的线程不停的发,没有问题,问题出在收包的线程,这个时候收包线程是被阻塞的(因为这个时候 DNS 反向解析不成功,一直要等到超时),所以收包线程要等到 DNS 超时后才打印出 ping 的结果,而这个时候结果是正确的,因为结果本来就是对的,只不过因为被阻塞而推迟了显示的时间而已,所以造成 ping 域名间隔很长的假象。如果用ping -n 关闭掉 DNS 解析就不会有这种问题了。
由于本地/etc/resolv.conf 文件里配置的DNS 主机我并有查看权限,所以结合上面的理论,让业务侧去找人分析查看了DNS 的配置是不是有问题。
文中关于Linux,Linux系统,红帽,Linux命令,linux认证,红帽linux,linux教程,linux视频的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何解决ping第一包时间过长的情况》文章吧,也可关注golang学习网公众号了解相关技术文章。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
500 收藏
-
199 收藏
-
221 收藏
-
285 收藏
-
192 收藏
-
379 收藏
-
500 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习