Я пытаюсь получить страницу программно, и каждый раз требуется ровно 10 секунд для разрешения хоста. На другой машине это займет ровно 30 секунд. Оба Linux.
Мой код написан на Java, но проблема воспроизводится с помощью wget:
time wget -d --header "User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/11.0.696.65 Chrome/11.0.696.65 Safari/534.24" http://www.sportsdirect.com
Это зависает на 10 секунд:
Resolving www.sportsdirect.com... 86.17.5.250
Мы работаем в Linux.
Чтобы запутать ситуацию, браузеры на одной и той же машине сразу же загружают ту же страницу.
Какие-нибудь подсказки?
Это связано с тем, что wget и lynx не кэшируют результаты DNS, и в ваших браузерах может даже быть отключен IPv6.
DNS для www.sportsdirect.com
не работает, а для записей AAAA истекает время ожидания.
Вы можете использовать -4
или --inet4-only
возможность wget для принудительного использования только IPv4.
$ time host -t A www.sportsdirect.com
www.sportsdirect.com is an alias for sd.gwcorp.sports-world.com.
sd.gwcorp.sports-world.com has address 86.17.5.250
real 0m0.009s
user 0m0.000s
sys 0m0.000s
$ time host -t AAAA www.sportsdirect.com
;; connection timed out; no servers could be reached
real 0m14.008s
user 0m0.000s
sys 0m0.000s
Браузеры могут кэшировать результаты DNS. Возможно, стоит попробовать выполнить запрос непосредственно к настроенным DNS-серверам, чтобы узнать, не являются ли они проблемой - возможно, один из них особенно медленный или не работает. Возьмите IP-адрес из nameserver
линия в /etc/resolv.conf
и беги
dig +trace www.sportsdirect.com 8.8.8.8
(заменить 8.8.8.8
с IP-адресом вашего DNS-сервера)