java.net.SocketException: сброс соединения — между клиентом и сервером, развернутым как веб-приложения в tomcat

У меня есть приложение шлюза java, развернутое как веб-приложение tomcat на сервере 1 и сервере 2, которые являются клиентскими серверами с балансировкой нагрузки.

Это приложение взаимодействует с другим веб-приложением, развернутым на серверах 3 и 4, которые также сбалансированы по нагрузке.

Во время больших объемов или при сбое подключения к основным внутренним системам из приложения (сервера 3 и 4) приложение шлюза регистрирует «java.net.SocketException: сброс соединения».

Для 10 запросов пара запросов дает «Сброс соединения» на клиентском сервере. Когда это происходит, в приложении на стороне сервера нет абсолютно никаких проблем. Иногда, когда возникает больше сбоев, приложение (Сервер 3 и 4) зависает и необходимо быть перезапущен.

Мы будем очень признательны за любой вклад. Заранее спасибо.


person Krithika Vittal    schedule 29.05.2018    source источник
comment
Обычно это вызвано записью в соединение, которое уже было закрыто узлом, или узлом, закрывающим соединение, когда в приемном буфере сокета еще остались непрочитанные данные.   -  person user207421    schedule 29.05.2018


Ответы (1)


После того, как в нашем приложении было проведено тестирование производительности, результат показал, что после нескольких одновременных запросов приложение останавливается для создания объектов HttpClient.

В итоге я использовал «ClientConnectionPoolManager». (Поддерживает пул HttpClientConnections и может обслуживать запросы на подключение от нескольких потоков выполнения. Соединения объединяются в пул для каждого маршрута. Запрос маршрута, для которого уже есть постоянные подключения менеджера, доступные в пул будет предоставлять услуги, арендуя соединение из пула, а не создавая новое соединение), и это, похоже, эффективно управляет соединениями.

Спасибо.

person Krithika Vittal    schedule 03.01.2019