可以从命令行检索jconsole数据吗?

我目前正在使用jconsole来监控我的Java应用程序的性能指标,并希望编写数据采集​​的 脚本

有没有办法检索这些VM指标(堆内存使用情况,线程数,CPU使用率等)到STDOUT
top -p PID -b -n 1中的数据并没有完全削减它。

谢谢

jconsole只是提供了平台MBeanServer中JMX MBean的包装器。

您可以使用Attach API编写一个程序来连接到您的VM,然后它将查询MBean。

或者您可以通过RMI公开平台MBeanServer并以这种方式查询MBean。

有关更多信息,请参阅java.lang.management包

也许jvmtop值得一看。
它是一个命令行工具,可为多个指标提供实时视图

VM概述模式的示例输出:

  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 

看看jmap ,它可用于从控制台获取堆转储。

对于堆转储中未涵盖的数据,我相信jconsole只是使用JMX连接到正在运行的JVM来获取统计信息 – 所以很可能创建自己的应用程序,可以从JMX中提取相同类型的统计信息。

您可以通过命令行使用此jmx查询工具: http : //crawler.archive.org/cmdline-jmxclient/

用于监视Java应用程序的一些其他有用的CLI工具是:

  • Jmxterm提供对应用程序服务器上所有MBean的完全访问权限,以交互方式运行或不运行,
  • jmxbox只能通过TCP套接字连接,而不能直接连接到具有PID的本地进程

您可能会发现jvm-mon对此很有用。 它是一个用于命令行的JVM监视工具,它消失了:

  • jvm进程
  • cpu和GC使用情况
  • 堆使用和大小
  • 顶线

工具打开时,指标和图表会更新。

样品: JVM-MON

jstack在其正常输出中提供了许多有用的信息位。 堆内存使用可直接使用,按GC区域分解; 线程数可以用一点perl / grep /等来确定。

这是对您的问题的部分答案:

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

我已成功使用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 )。