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 эти настройки сильно повлияли на скорость распознавателя.