当一个ping报告一个合理的时间(~10ms)但是实际上需要相当长的挂钟时间(~15 秒 )时,这意味着什么? (另外,传递“完全用户到用户延迟”的-U选项不起作用。)
当从我的工作计算机上ping某个外部主机时,会发生这种情况,而且我正在四处寻找,因为我也在HTTP请求超时了同一个主机。 跟踪路由发生了类似的情况,只有最后几跳才能到达目的地的子网。
(另外,值得一提的是,外部主机是cdn.sstatic.net,我知道它通常是可行的!)
如果使用-n标志禁止查找“主机地址的符号名”,会发生什么? 你所描述的那种行为往往表明由于缓慢的反向DNS查询造成的延迟。
对于你给出的例子(cdn.sstatic.net),我看到没有有效的反向条目对应的转发条目(我看到69.174.57.102)。 这正是如果您使用反向查找的工具会导致怪异行为的情况。
是的,这可能是DNS。
2种方式来确定。 strace -r ping …很好。
0.000014 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 0.000015 poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}]) 0.000020 sendto(4, "\305\351\1\0\0\1\0\0\0\0\0\0\10intel-01\20scinterane"..., 47, MSG_NOSIGNAL, NULL, 0) = 47 0.000022 poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout) 4.999871 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
查看DNS查找中的4.999秒延迟。
或者你可以只ping一个主机名称,并ping IP地址,如果ping主机名是一致的,并且大大慢于直接Ping的IP地址之间的区别。