Java/Tomcat Open TCP Connections - монитор ресурсов

Прямо сейчас мы сталкиваемся с проблемой, когда у нас есть несколько "открытых TCP-соединений" на нашем сервере Windows, на которых работает веб-сервер tomcat. Java-код выполняет SOAP-вызов поставщика, и мы видим множество открытых соединений в Resource Monitor (на рисунке ниже), показывающих IP-адрес поставщика. Я попробовал несколько разных способов сделать вызов SOAP, думая, что соединение не было явно закрыто где-то за кулисами. Пока ничего не получалось, так что я думаю, что могу неправильно понять, что на самом деле показывает эта страница.

Каков жизненный цикл TCP-соединения в связи с монитором ресурсов Windows? Это нормально для соединений, которые больше не используются, чтобы оставаться там какое-то время? Если нет, как мне исправить ситуацию?

1 ответ

Это будет либо пул соединений, либо утечка ресурсов в вашем коде.

Чтобы убедиться, что это не утечка ресурсов, проверьте ваш код, чтобы убедиться, что любой объект, выполняющий сетевой вызов, закрывает соединение после его использования, иначе вы будете ждать, пока запустится сборщик мусора.

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

Нет пула или постоянства на уровне Windows Winsock. Если нижележащий сокет закрывается, то все, закрывается.

Другие вопросы по тегам