Java / Tomcat Open TCP Connections - монитор ресурсов - PullRequest
0 голосов
/ 13 февраля 2019

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

Windows Resource Monitor TCP Connections with several java.exe's (not greyed out) with the vendor's IP

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

1 Ответ

0 голосов
/ 18 февраля 2019

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

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

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

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

...