当 ping 报告合理的时间(~10 毫秒)但实际上需要相当长的挂钟时间(~15秒)时,这意味着什么?(此外,传递-U“完整的用户到用户延迟”选项无效。)
当从我的工作计算机 ping 某个外部主机时会发生这种情况 - 我正在四处寻找,因为我也对同一主机的 HTTP 请求超时。traceroute 也会发生类似的情况,仅在到达目的地子网的最后几跳上。
(此外,就其价值而言,外部主机是 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)
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)4.999871 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
DNS 查找中的 4.999 秒延迟。
或者您可以直接 ping 主机名并直接 ping IP 地址。无论何时 ping 主机名始终比 ping IP 地址慢得多。这是由于 DNS 查找延迟所致。