Иногда wget или curl случайно зависают в середине запроса get в Ubuntu 10.10:

curl "http://api.indeed.com/ads/apisearch?publisher=7570038743238473"
wget "http://api.indeed.com/ads/apisearch?publisher=7570038743238473" -O - -d

Кажется, проблема в некоторой низкоуровневой библиотеке, которая выполняет запрос, но не в заголовках, куки или кешах.

Есть идеи?

3 ответа3

1

Этот URL загружается без ошибок или зависает для меня. Поскольку wget и curl - это, как правило, эти низкоуровневые библиотеки, и они используют только протокол HTTP/TCP, ошибка может быть в двух местах:

  1. Запрос может быть неправильно обработан на вашей стороне. Я несколько раз испытывал подобные симптомы, и похоже, что они могут быть вызваны узлом на вашем маршруте к серверу, у которого MTU меньше, чем у вас (часто это VPN вашего провайдера, если они его используют), и из-за что пакеты отбрасываются (я не знаю, что именно там происходит, так как теоретически они должны быть фрагментированы).

    Быстрая проверка состоит в том, чтобы снизить MTU локально на вашем Ethernet/WiFi-соединении следующим образом:

    sudo ip link set $IFACE mtu 1300
    

    где $ IFACE - это сетевой интерфейс (eth0 , wlan0 и т. д.).

  2. Запрос может быть приостановлен сервером. Сервер может быть перегружен, неправильно настроен или просто выборочно блокировать ваши запросы. Это менее вероятный вариант, и его нелегко диагностировать.

0

Мои идеи:

  • Сервер иногда перегружен.
  • Используйте сниффер (например, Wireshark), чтобы увидеть, что происходит, когда он зависает.
  • Используйте strace, чтобы увидеть, что делает wget/curl, когда зависает.
0

Я бы использовал tcpdump, чтобы увидеть, где именно он висит. Вы можете найти закономерности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .