NoHttpResponseException является повторяемым исключением? - PullRequest
0 голосов
/ 20 апреля 2020

Мы реализовали пул соединений в нашем клиентском коде для вызова сервера, который закрывает (отправляет Connection: close в заголовках ответа) соединение через 2,5 минуты. Из-за поведения сервера мы иногда / периодически получаем исключение NoHttpResponseException. И это может происходить как при высоком TPS, так и при низком TPS.

Мы используем apache http-клиент версии 4.5.11. И есть одна validateAfterInactivity настройка в PoolingHttpClientConnectionManager, которая по умолчанию установлена ​​на 2000 мс. Но я думаю, что мы можем получить то же исключение, если попытаемся установить соединение в период 2000 мс.

Мы можем установить агрессивное значение для validateAfterInactivity, но я слышал, что это может снизить производительность на ~ 20-30 мс для каждого запроса.

повторная попытка этого исключения является хорошим решением?

А также для выравнивания в том же контексте, можем ли мы повторить попытку в случае java. net .SocketException: сброс соединения ?

@ ok2 c любой предложение здесь?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

NoHttpResponseException считается безопасным для повторения для идемпотентных методов.

В вашем конкретном случае, однако, я бы рассмотрел ограничение TTL (общее время жизни) клиентских подключений до 2,5 минут, чтобы соответствовать конечным точкам сервера.

...