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

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

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

Спасибо


person Jonathan    schedule 28.07.2009    source источник


Ответы (9)


jconsole просто обеспечивает оболочку для компонентов JMX MBean, находящихся на платформе MBeanServer.

Вы можете написать программу для подключения к вашей виртуальной машине, используя Attach API, который затем будет запрашивать компоненты MBean.

Или вы можете открыть платформу MBeanServer через RMI и запросить MBeans таким образом.

См. java.lang.management пакет для получения дополнительной информации

person Kevin    schedule 28.07.2009

Возможно, стоит взглянуть на jvmtop.
Это инструмент командной строки, который предоставляет просмотр в реальном времени для нескольких показателей.

Пример вывода режима обзора ВМ:

 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
person MRalwasser    schedule 07.04.2013

Вы можете использовать этот инструмент запросов jmx в командной строке: http://crawler.archive.org/cmdline-jmxclient/

person user2427    schedule 14.03.2011

Взгляните на jmap, который может использоваться для получения дампа кучи с консоли.

Для данных, не охватываемых дампом кучи, я полагаю, что jconsole просто использует JMX для подключения к работающей JVM для получения статистики, поэтому, вероятно, можно создать собственное приложение, которое могло бы извлекать те же типы статистики из JMX.

person matt b    schedule 28.07.2009

Некоторые другие полезные инструменты CLI для мониторинга приложений Java:

  • Jmxterm, который предоставляет полный доступ ко всем компонентам MBean на сервере приложений, независимо от того, работает он интерактивно или нет,
  • jmxbox, который может подключаться только через сокет TCP, а не напрямую к локальному процессу с его PID
person Læti    schedule 09.01.2013

Для этого вам может пригодиться jvm-mon. Это инструмент мониторинга JVM для командной строки, который отображает:

  • JVM-процессы
  • использование процессора и сборщика мусора
  • использование и размер кучи
  • главные темы

Показатели и диаграммы обновляются, пока инструмент открыт.

Пример: jvm-mon

person Andrejs    schedule 08.02.2017

jstack предлагает ряд полезных фрагментов информацию в обычном виде. Использование динамической памяти доступно напрямую с разбивкой по регионам сборщика мусора; количество потоков можно определить с помощью perl/grep/и т. д.

person Sbodd    schedule 28.07.2009

Это частичный ответ на ваш вопрос:

set JAVA_OPTS=%JAVA_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m 
person djangofan    schedule 28.07.2009

Я успешно использовал 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).

person llama    schedule 04.11.2010