Подтвердить что ты не робот

Можно ли извлекать данные jconsole из командной строки?

В настоящее время я использую jconsole для отслеживания показателей производительности моего приложения Java и хотел бы script получать данные.

Есть ли способ получить эти метрики VM (использование памяти кучи, количество потоков, загрузка процессора и т.д.) до STDOUT?
Данные в top -p PID -b -n 1 не совсем сокращают его.

Спасибо

4b9b3361

Ответ 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.

Ответ 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