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

Почему зависает wget?

wget на один конкретный URL-адрес с одного из моих серверов продолжает получать таймауты. Все остальные URL-адреса из этого ящика работают нормально. Этот URL работает нормально с любыми другими ящиками, которые у меня есть. Вот результат:

wget -T 10 http://www.fcc-fac.ca
--2011-07-14 14:44:29--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... failed: Connection timed out.
Connecting to www.fcc-fac.ca|207.195.108.140|:80... failed: Connection timed out

Можете ли вы сказать мне, что может быть не так и как я могу это устранить? Я использую Ubuntu 11.04 (GNU / Linux 2.6.38-8-server x86_64)

Заранее большое спасибо и простите мое нубское незнание :)

ping, telnet, nc www.fcc-fac.ca 80 - все зависают. Однако некоторые другие URL-адреса, которые легко доступны, хотя только некоторые их хостов можно пинговать.

traceroute мне мало что говорит:

7  rx0nr-access-communications.wp.bigpipeinc.com (66.244.208.10)  148.834 ms  149.018 ms  148.940 ms
8  sw-1-research.accesscomm.ca (24.72.3.9)  158.901 ms  159.805 ms  160.162 ms
9  65.87.238.126 (65.87.238.126)  150.069 ms  148.861 ms  148.846 ms
10  * * *
...
30  * * *

Большое спасибо за ответы!

Я думаю, что проблема в том, что wget плохо обрабатывает адреса IPv6, а DNS-сервер отправляет IPv6 для этого сайта. Извините, если я неправильно понял ваш вопрос. Проверьте эти тесты:

hmontoliu@ulises:~$ wget -T10 http://www.fcc-fac.ca
--2011-07-14 16:44:34--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: Connection timed out.
wget: unable to resolve host address `www.fcc-fac.ca'

Если я принудительно использую IPv6, потому что считаю, что ваша проблема связана с ним, он не работает:

hmontoliu@ulises:~$ wget -6 http://www.fcc-fac.ca
--2011-07-14 16:40:44--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: No address associated with hostname.
wget: unable to resolve host address `www.fcc-fac.ca'

Однако, если я заставлю использовать IPv4, он загрузит прямо страницу индекса.

hmontoliu@ulises:~$ wget -4 http://www.fcc-fac.ca
--2011-07-14 16:40:56--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6554 (6,4K) [text/html]
Saving to: `index.html'

Бегать nc www.fcc-fac.ca 80, введите GET / и дважды нажмите Enter.

Возможно, удаленный прицел не работает или блокирует вас.

похоже, что wget не может подключиться к вашему ip через порт 80.

проверьте, доступен ли ваш сервер для проверки связи:

ping 65.87.238.35
ping 207.195.108.140

Если ip доступен для проверки связи, проверьте, можете ли вы подключиться к порту 80 с помощью telnet:

телнет 65.87.238.35 80

если сервер не отвечает на эхо-запрос, вероятно, он не работает или недоступен для вашей исходной сети.

протестируйте с помощью инструмента traceroute, чтобы увидеть, где не удается установить соединение.

Исправление медленного разрешения DNS в сценариях PHP с использованием библиотеки CURL.

Из документации libcurl:

CURLOPT_IPRESOLVE

Позволяет приложению выбирать, какие IP-адреса использовать при разрешении имен хостов. Это интересно только при использовании имен хостов, которые разрешают адреса с использованием более чем одной версии IP. Допустимые значения:

CURL_IPRESOLVE_WHATEVER

По умолчанию разрешает адреса для всех версий IP, которые позволяет ваша система.

CURL_IPRESOLVE_V4

Разрешить адреса IPv4.

CURL_IPRESOLVE_V6

Разрешите адреса IPv6.

Я считаю, что их можно установить как переменные среды. По крайней мере, при использовании PHP эти настройки сильно повлияли на скорость распознавателя.