Я использую Jersey 1.4, ApacheHttpClient
, и класс Apache MultiThreadedHttpConnectionManager
для управления подключениями. Для HttpConnectionManager
я установил staleCheckingEnabled на true, maxConnectionsPerHost на 1000 и maxTotalConnections на 1000. Все остальное по умолчанию. Мы работаем в Tomcat и устанавливаем соединения с несколькими внешними хостами с помощью клиента Jersey.
Я заметил, что через небольшой промежуток времени я начну видеть сокеты в состоянии CLOSE_WAIT, которые связаны с процессом Tomcat. Некоторый мониторинг с помощью tcpdump показывает, что внешние хосты через некоторое время закрывают соединение, но с нашей стороны оно не закрывается. Обычно в очереди чтения сокета есть некоторые данные, часто 24 байта. Соединения используют https, и данные кажутся зашифрованными, поэтому я не уверен, что это такое.
Я проверил, что создаваемые объекты ClientRequest закрыты. Сокеты в CLOSE_WAIT, похоже, перерабатываются, и у нас не заканчиваются какие-либо ресурсы, по крайней мере, в настоящее время. Я не уверен, что происходит на внешних серверах.
Мой вопрос: нормально ли это, и следует ли мне беспокоиться?
Спасибо,
Джон