Как я могу отслеживать / регистрировать пул потоков Tomcat? - PullRequest
31 голосов
/ 07 сентября 2011

У меня есть установка Tomcat, где я подозреваю, что пул потоков может со временем уменьшаться из-за неправильного освобождения потоков.Я получаю сообщение об ошибке в catalina.out при достижении maxthreads, но я хотел бы записывать число используемых потоков в файл каждые пять минут, чтобы я мог проверить эту гипотезу.Кто-нибудь может посоветовать, как это можно сделать?

Также в этой установке нет менеджера Tomcat, похоже, кто бы ни делал первоначальную установку, он по какой-то причине удалил веб-приложение менеджера.Я не уверен, сможет ли менеджер сделать вышеуказанное или я могу переустановить его, не повредив существующую установку?Все, что я действительно хочу сделать, это отслеживать пул потоков.

Кроме того, я заметил, что maxthreads для Tomcat составляет 200, но максимальное количество одновременных подключений для Apache меньше (Apache использует mod_proxy и mod_proxy_ajp (AJP 1.3) кормить Tomcat).Это тоже кажется неправильным, какова правильная связь между этими числами?

Любая помощь, высоко ценимая: D

Обновление: Просто быстрое обновление, чтобы сказать прямой доступ JMXработал.Однако мне также пришлось установить Dcom.sun.management.jmxremote.host.Я установил его на localhost, и он работал, однако без него не было бы и кубиков.Если у кого-то еще есть аналогичная проблема при попытке включить JMX, я рекомендую также установить это значение, даже если вы подключаетесь с локального компьютера.Кажется, это требуется для некоторых версий Tomcat.


Просто быстрое обновление, чтобы сказать, что прямой доступ JMX сработал.Однако мне также пришлось установить Dcom.sun.management.jmxremote.host.Я установил его на localhost, и он работал, однако без него не было бы и кубиков.Если у кого-то еще есть аналогичная проблема при попытке включить JMX, я рекомендую также установить это значение, даже если вы подключаетесь с локального компьютера.Кажется, это требуется для некоторых версий Tomcat.

Ответы [ 3 ]

15 голосов
/ 07 сентября 2011

Прямой доступ JMX

Попробуйте добавить это к catalina.sh / bat:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=5005
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

ОБНОВЛЕНИЕ: Алекс Р предполагает, что в некоторых ситуациях могут также потребоваться следующие настройки:

-Dcom.sun.management.jmxremote.host=localhost

Это разрешает удаленные анонимные JMX-соединения через порт 5005. Вы также можете рассмотреть JVisualVM, что гораздо более удобно и позволяет просматривать JMX через плагин.

То, что вы ищете, это Catalina -> ThreadPool -> http-bio-8080 -> различные интересные метрики.

JMX прокси сервлет

Более простой способ - использовать прокси-сервлет JMX Tomcat в: http://localhost:8080/manager/jmxproxy. Например, попробуйте этот запрос:

$ curl --user tomcat:tomcat http://localhost:8080/manager/jmxproxy?qry=Catalina:name=%22http-bio-8080%22,type=ThreadPool

Немного пинг и сценариев grep, и вы можете легко и удаленно контролировать ваше приложение. Обратите внимание, что tomcat:tomcat - это имя пользователя / пароль пользователя с ролью manager-jmx в conf/tomcat-users.xml.

2 голосов
/ 25 марта 2017

Вы можете развернуть jolokia.war и затем извлечь значения mbeans в JSON (без менеджера):

http://localhost:8080/jolokia/read/Catalina:name=*,type=ThreadPool?ignoreErrors=true

Если вам нужны только некоторые значения (currentThreadsBusy, maxThreads, currentThreadCount, connectionCount):

http://localhost:8080/jolokia/read/Catalina:name=*,type=ThreadPool/currentThreadsBusy,maxThreads,currentThreadCount,connectionCount?ignoreErrors=true

{
    request: {
       mbean: "Catalina:name="http-nio-8080",type=ThreadPool",
       attribute: [
          "currentThreadsBusy",
          "maxThreads",
          "currentThreadCount",
          "connectionCount"
       ],
       type: "read"
    },
    value: {
       currentThreadsBusy: 1,
       connectionCount: 4,
       currentThreadCount: 10,
       maxThreads: 200
    },
    timestamp: 1490396960,
    status: 200
}

Примечание. Этот пример работает на Tomcat7 +.

2 голосов
/ 12 июля 2013

Для более корпоративного решения. Я использую New Relic в нашей производственной среде.

Предоставляет график изменений в пуле потоков с течением времени.

...