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
PING sqsdou.wx.ucweb.com (211.103.25.41) () bytes of data.
bytes from 211.103.25.41: icmp_seq= ttl= time=10.7 ms
--- sqsdou.wx.ucweb.com ping statistics ---
packets transmitted, received, % 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
PING sqsdou.wx.ucweb.com (211.103.25.41) () bytes of data.
bytes from 211.103.25.41: icmp_seq= ttl= time=10.6 ms
--- sqsdou.wx.ucweb.com ping statistics ---
packets transmitted, received, % 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 的配置是不是有问题。
ping第一包时间过长的更多相关文章
- 为什么首次ping丢包
1.之前就有关于为什么我们ping包的时候第一个包总是显示逗点,也就是超时的困惑.很多人的解答就是因为ARP啊,然后就没有下文了.继续追问那么为什么ARP就要是逗点呢?然后就又有一些人说因为要ARP解 ...
- ping 丢包或不通时链路测试说明【转】
转自:https://help.aliyun.com/knowledge_detail/40573.html?spm=5176.2020520165.121.d157.4fe170291Qdp4l#W ...
- 对HTTP请求接口资源下载时间过长的问题分析
问题描述 我司某产品线有指定业务接口customQuery在线上环境中,与首页一起打开时下载数据的时间明显过长(平均可以达到2s) 注: "与首页一起打开" 的含义是指用户进入WE ...
- 解决Android Studio中Refreshing gradle project时间过长的最简单方法
Refreshing gradle project往往出现在Gradle出现更新,需要从墙外的网重新拖下来的前提下.具体可以查看以下文件:/path/to/project/gradle/wrapper ...
- linux环境下启动tomcat7出现时间过长(已经编译完成的项目)问题解决!
已经编译完成的项目,系统启动过程中,提示: INFO: Starting Servlet Engine: Apache Tomcat/7.0.81 Sep 20, 2017 3:17:32 PM or ...
- ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测
利用 ICMP 隧道穿透防火墙 转自:http://xiaix.me/li-yong-icmp-sui-dao-chuan-tou-fang-huo-qiang/ 以前穿透防火墙总是使用 SSH 隧道 ...
- 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。
环境:景安快云服务器(听说很垃圾,但是公司买的,我也刚来),CentOS-6.8-x86_64,Apache,MySQL5.1,PHP5.3. 问题:现公司有一个php系统,需要重复向后台发送ajax ...
- 快速模式第一包: quick_outI1()
文章目录 1. 序言 2. quick_outI1()流程图 3. quick_outI1()源码分析 4. quick_outI1_continue()源码分析 5. quick_outI1_tai ...
- 优化JS加载时间过长的一种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 去年公司在漳州的一个项目中,现场工程人员反映地图部分出图有点 ...
随机推荐
- 01_StudentManager
package com.dao; import java.util.ArrayList; import java.util.Iterator; import java.util.List; impor ...
- Python的集合框架
Python内置了四种集合框架(list.tuple.dict.set) list:list是一种有序的集合 list里面的元素的数据类型也可以不同,list元素也可以是另一个list In [28] ...
- 2018.11 企业战略课堂笔记2 SWOT-4C战略
1因素列表 2分析过程 :重要的是逻辑推理过程 3 4C战略
- 使用 create-react-app 构建 react应用程序
原文 http://blog.csdn.net/github_squad/article/details/57452333#
- 做网站用UTF-8还是GB2312?
经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ...
- Linux:tr命令详解
tr tr命令可以对来自标准输入的字符进行替换.压缩和删除 语法 tr(选项)(SET1 SET2) 选项 -c或——complerment:取代所有不属于第一字符集的字符: -d或——delete: ...
- 解析6种常用View 的滑动方法
View 的滑动是Android 实现自定义控件的基础,实现View 滑动有很多种方法,在这里主要讲解6 种滑动方法,分别是layout().offsetLeftAndRight()与offsetTo ...
- @media 照成的问题
多出很大的空白, 原因: left 进行了叠加. 解决办法: 即,不在media里写,将其写在box下
- Buildroot 使用默认配置
/******************************************************************************** * Buildroot 使用默认配置 ...
- 2019ICPC南昌邀请赛网络赛 I. Max answer (单调栈+线段树/笛卡尔树)
题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum.最小前缀lsum.最小后缀rsum,枚举每个数a[i] ...