HTTP-клиент apache: тайм-аут соединения из-за отсутствия маршрута к хосту

У меня проблема с apache http client (4.2.1) таймаутами соединения, если хост есть но не отвечает вовремя, соединение закрывается по таймауту (все как положено), но если такого хоста нет, то клиент продолжает ждать дольше ожидаемого (около 12 секунд вместо 5, указанных в конфигурации). В конечном итоге это приводит к NoRouteToHostException, вероятно, из-за конкретных проблем с сетью (когда я пытался воспроизвести это в другой сети, я получил исключение тайм-аута чтения сокета после 5 секунд ожидания, как и ожидалось). Я использую следующие настройки времени ожидания:

  • http.socket.timeout = 5 секунд
  • http.connection.timeout = 5 секунд

Любые мысли приветствуются.

Обновлять

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

Обновление2

В конце концов мне удалось решить проблему. Проблема была вызвана повторными попытками подключения, выполняемыми DefaultHttpRequestRetryHandler, используемым AbstractHttpClient (который является родителем DefaultHttpClient), если обработчик повторных попыток запроса не указан явно. Итак, если вы хотите избавиться от этого, просто укажите обработчик повторных попыток запроса с меньшим количеством повторных попыток.


person Ruslan Sverchkov    schedule 03.02.2013    source источник


Ответы (1)


В конце концов мне удалось решить проблему. Проблема была вызвана повторными попытками подключения, выполняемыми DefaultHttpRequestRetryHandler, используемым AbstractHttpClient (который является родителем DefaultHttpClient), если обработчик повторных попыток запроса не указан явно. Итак, если вы хотите избавиться от этого, просто укажите обработчик повторных попыток запроса с меньшим количеством повторных попыток.

person Ruslan Sverchkov    schedule 11.08.2014