Как я могу отслеживать / регистрировать пул потоков Tomcat?
У меня есть установка Tomcat, где я подозреваю, что пул потоков может уменьшаться с течением времени из-за того, что потоки не освобождаются должным образом. Я получаю ошибку в catalina.когда maxthreads достигнут, но я хотел бы регистрировать количество используемых потоков в файле каждые пять минут, чтобы я мог проверить эту гипотезу. Кто-нибудь может посоветовать, как это можно сделать?
также в этой установке нет менеджера Tomcat, кажется, тот, кто сделал оригинал установка по какой-то причине удалила manager webapp. Я не уверен, что менеджер сможет сделать это выше или если я могу переустановить его без повреждения существующей установки? Все, что я действительно хочу сделать, это отслеживать пул потоков.
кроме того, я заметил, что maxthreads для Tomcat составляет 200, но максимальное количество параллельных соединений для Apache ниже (Apache использует mod_proxy и mod_proxy_ajp (AJP 1.3) для подачи Tomcat). Это тоже кажется неправильным, каковы правильные отношения между этими числами?
любая помощь очень ценится :D
обновление: просто быстрое обновление, чтобы сказать, что прямой доступ JMX работал. Однако мне также пришлось установить Dcom.солнце.управление.jmxremote.хозяин. Я установил его на localhost, и он работал, однако без него никаких костей. Если у кого-то еще есть аналогичная проблема с включением JMX, я рекомендую вам также установить это значение, даже если вы подключаетесь с локального компьютера. Кажется, это требуется с некоторыми версиями Кот.
просто быстрое обновление, чтобы сказать, что прямой доступ JMX работал. Однако мне также пришлось установить Dcom.солнце.управление.jmxremote.хозяин. Я установил его на localhost, и он работал, однако без него никаких костей. Если у кого-то еще есть аналогичная проблема с включением JMX, я рекомендую вам также установить это значение, даже если вы подключаетесь с локального компьютера. Кажется, это требуется с некоторыми версиями Tomcat.
3 ответов
прямой доступ 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 прокси сервлет
более простым методом может быть использование Tomcat's JMX прокси сервлет в: http://localhost:8080/manager/jmxproxy. Например, попробуйте этот запрос:
$ curl --user tomcat:tomcat http://localhost:8080/manager/jmxproxy?qry=Catalina:name=%22http-bio-8080%22,type=ThreadPool
немного grep
ping и скрипты, и вы можете легко и удаленно контролировать приложения. Обратите внимание, что tomcat:tomcat
имя пользователя/пароль пользователя, имеющего manager-jmx
роль conf/tomcat-users.xml
.
для более бизнес-решение. Я использовал New Relic в нашей производственной среде.
Это предоставляет график изменений в threadpool с течением времени.
вы можете развернуть jolokia.война!--3--> а затем получить значения mbeans в JSON (без менеджера):
http://localhost:8080/jolokia/read/Catalina:name=*, type=ThreadPool?ignoreErrors=true
Если вы хотите только некоторые значения (currentThreadsBusy, maxThreads, currentThreadCount, connectionCount):
{
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 +.