Мы используем новую реликвию для мониторинга потоков tomcat. График показывает увеличение количества потоков, но оно никогда не уменьшалось, даже если приложение простаивает. Мы заметили, что при увеличении ЦП также увеличивается, а ЦП уменьшается, когда приложение простаивает. Но потоки tomcat не сокращаются. Ожидается или как вывести счетчик потоков?
Чтобы ответить на ваш вопрос, это зависит от того, как вы настроили Tomcat. Он будет использовать пул потоков для обработки ваших запросов, и этот пул может сжиматься. См. MinSpareThreads и maxIdleTime в Исполнитель объект.
Если вы не используете Executor и полагаетесь на пул по умолчанию, созданный коннектором, у вас меньше контроля. Вы можете установить minSpareThreads, но не maxIdleTime. Если вы не используете исполнителя, переключиться легко. Просто создайте его в своей конфигурации (например, server.xml) и установите атрибут исполнителя на своем соединителе. В по умолчанию server.xml имеет пример, хотя это закомментировано.
Помимо этого, стоит упомянуть, что другие вещи в JVM могут создавать потоки. Я не знаю конкретно, что вы отслеживаете, все ли это потоки в JVM или только те, которые Tomcat использует для обработки запросов, но ваши приложения и библиотеки, используемые этими приложениями, могут вызывать проблему. Если вы видите неограниченный рост потока, вам следует свалки потоков и точно посмотрите, какие потоки создаются. Возможно, эти потоки создает не Tomcat.