Что это значит, когда пинг сообщает о разумном времени (~ 10 мс), но на самом деле занимает довольно много времени на настенных часах (~ 15 секунды)? (Дополнительно, передавая -U
опция "полная задержка между пользователем" не имеет никакого эффекта.)
Это происходит при пинге определенного внешнего хоста с моего рабочего компьютера - и я ковыряюсь, потому что я также получаю таймауты на HTTP-запросы к тому же хосту. Нечто подобное происходит с traceroute только на последних паре переходов, которые достигают подсети пункта назначения.
(Кроме того, как бы то ни было, внешний хост - cdn.sstatic.net, который, как я знаю, обычно работает!)
Да, наверное, это 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
См. Задержку в 4,999 секунды в поиске DNS.
Или вы можете просто пинговать имя хоста и пинговать IP-адрес, если пинг имени хоста последовательно и значительно медленнее, чем пинг IP-адреса напрямую, разница между.
Что произойдет, если вы воспользуетесь -n
флаг запрета поиска «символических имен для адресов хоста»? Тип поведения, который вы описываете, часто предполагает задержки из-за медленного обратного поиска DNS.
В приведенном вами примере (cdn.sstatic.net) я вижу, что не существует действительной обратной записи, соответствующей прямой записи (я вижу 69.174.57.102). Это именно та ситуация, которая может привести к странному поведению, если вы используете инструменты, пытающиеся выполнить обратный поиск.