Чому 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-сервер 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.

перевірте, чи ваш сервер pingable:

ping 65.87.238.35
ping 207.195.108.140

якщо ip pingable, перевірте, чи можна підключитися до порту 80 за допомогою telnet:

телнет 65.87.238.35 80

якщо сервер не відповідає на ping, він, ймовірно, не працює або недоступний для вашої вихідної мережі.

перевірити за допомогою інструмента traceroute, щоб побачити, де з'єднання не вдається.


Гей, дякую за відповідь - я оновив оригінальне запитання
Щепан

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

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

Гаразд. Я бачу. Обидва ips не є pingeable (я перевірив на двох різних машинах). І все-таки посилання працює у веб-переглядачі, і коли він виходить з інших машин, ніж той, що створює проблеми: /
Szczepan

Більший тайм-аут не допомагає
Щепан

1

Виправити повільну роздільну здатність DNS у скриптах PHP за допомогою бібліотеки CURL.

З документації на лібкурл:

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.