Почему висит Wget?


12

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-адреса, которые легко wget'able, хотя только некоторые из их хостов являются проверяемыми.

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  * * *

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

Ответы:


14

Я думаю, что проблема в том, что 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'

Он решает это просто отлично с адресом IPv4.
Джоди С

Еще один пример того, почему мне не нравится IPv6: - /
PJ Brunet

1

Запустите nc www.fcc-fac.ca 80, введите GET /и дважды нажмите Enter.

Дистанционное зрение может быть внизу или блокировать вас.


Привет, спасибо за ответ - я обновил оригинальный вопрос
Щепан

Если вы не можете подключиться по адресу, то вы, вероятно, заблокированы где-то по пути.
Джоди С

1

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

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

ping 65.87.238.35
ping 207.195.108.140

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

телнет 65.87.238.35 80

если сервер не отвечает на команду ping, он, вероятно, недоступен или недоступен для вашей исходной сети.

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


Привет, спасибо за ответ - я обновил оригинальный вопрос
Щепан

раскопки на www.fcc-fac.ca говорят мне, что у него есть 2 DNS-записи типа A: ;; РАЗДЕЛ ОТВЕТА: www.fcc-fac.ca. 120 В 65.87.238.35 www.fcc-fac.ca. 120 IN A 207.195.108.140, если оба недоступны, хост не работает, и, естественно, wget не сможет получить нужный вам файл. если есть доступ к некоторому ip, wget пропустит вниз ip, пока не встретит ip, к которому он может обратиться, и загрузит файл оттуда. в вашем случае оба хоста кажутся неработающими из-за длительного времени отклика (тайм-аут).
Гоес

Вы можете использовать опцию -T в wget, чтобы увеличить значение тайм-аута. Тайм-аут составляет от секунд до секунд, так что, возможно, поможет более высокое значение
Goez

Ok. Понимаю. Оба ips не пингуются (я проверял с 2 разных машин). Тем не менее, ссылка отлично работает в браузере и когда wget'ed с разных машин, чем тот, который создает проблемы: /
Щепан

Более высокий тайм-аут не помогает
Щепан

1

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

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

CURLOPT_IPRESOLVE

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

CURL_IPRESOLVE_WHATEVER

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

CURL_IPRESOLVE_V4

Разрешение на адреса IPv4.

CURL_IPRESOLVE_V6

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.