Можно ли извлекать данные jconsole из командной строки?
В настоящее время я использую jconsole
для отслеживания показателей производительности моего приложения Java и хотел бы script получать данные.
Есть ли способ получить эти метрики VM (использование памяти кучи, количество потоков, загрузка процессора и т.д.) до STDOUT
?
Данные в top -p PID -b -n 1
не совсем сокращают его.
Спасибо
Ответы
Ответ 1
jconsole просто предоставляет оболочку вокруг JMX MBeans, которые находятся в платформе MBeanServer.
Вы можете написать программу для подключения к вашей виртуальной машине с помощью Attach API, который затем запросит MBeans.
Или вы можете выставить платформу MBeanServer через RMI и запросить MBeans таким образом.
Подробнее см. java.lang.management для получения дополнительной информации
Ответ 2
Возможно, jvmtop стоит посмотреть.
Это инструмент командной строки, который обеспечивает live-view для нескольких показателей.
Пример вывода режима просмотра виртуальной машины:
JvmTop 0.4.1 amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
Ответ 3
Взгляните на jmap
, который можно использовать для удаления дампа кучи с консоли.
Для данных, которые не указаны в дампе кучи, я считаю, что jconsole просто использует JMX для подключения к запущенной JVM для получения статистики, поэтому возможно создать собственное приложение, которое могло бы вытащить те же самые типы статистики из JMX.
Ответ 4
Вы можете использовать этот инструмент запроса jmx по командной строке: http://crawler.archive.org/cmdline-jmxclient/
Ответ 5
Некоторые другие полезные инструменты CLI для мониторинга приложений Java:
- Jmxterm, который дает полный доступ ко всем MBeans на сервере приложений, работает интерактивно или нет,
- jmxbox, который может подключаться только через сокет TCP, а не напрямую к локальному процессу с его идентификатором PID
Ответ 6
jstack предлагает ряд полезных бит информации в своем нормальном выходе. Использование памяти кучи прямо доступно, разбитое по регионам GC; количество потоков может быть определено с помощью немного perl/grep/и т.д.
Ответ 7
Вы можете найти jvm-mon для этого. Это инструмент мониторинга JVM для командной строки, который отключается:
- процессы jvm
- Использование процессора и GC
- Использование и размер кучи
- верхние темы
Показатели и диаграммы обновляются, пока инструмент открыт.
Образец: ![jvm-mon]()
Ответ 8
Это частичный ответ на ваш вопрос:
set JAVA_OPTS=%JAVA_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m
Ответ 9
Я успешно использовал tomcat jmxproxy для доступа к скриптам (http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#Using_the_JMX_Proxy_Servlet).
Я не использовал ни одного из них, но один из проектов jmx-rest может быть вариантом для сервера, не являющегося tomcat (http://www.google.com/search?q=jmx+rest).