Назад | Перейти на главную страницу

Разрешение хоста постоянно происходит медленно

Я пытаюсь получить страницу программно, и каждый раз требуется ровно 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-сервера)