我目前使用 jconsole
监控我的 Java 应用程序的性能指标,并且希望 编写脚本 来进行这个数据采集。
是否有一种方法可以将这些 VM 指标(堆内存使用情况、线程数、CPU 使用率等)检索到 STDOUT
?
在 top -p PID -b -n 1
中的数据并不太准确。
谢谢
我目前使用 jconsole
监控我的 Java 应用程序的性能指标,并且希望 编写脚本 来进行这个数据采集。
是否有一种方法可以将这些 VM 指标(堆内存使用情况、线程数、CPU 使用率等)检索到 STDOUT
?
在 top -p PID -b -n 1
中的数据并不太准确。
谢谢
jconsole
只是提供了一个包装器,用于访问平台MBeanServer
中的JMX MBeans。
您可以编写一个程序使用Attach API连接到您的虚拟机,然后查询MBeans。
或者您可以通过RMI公开平台MBeanServer
并以此方式查询MBeans。
有关更多信息,请参见java.lang.management包。
也许 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
jmap
,它可以用于从控制台获取堆转储。
对于堆转储中未涵盖的数据,我认为jconsole
只是使用JMX连接到运行的JVM以获取统计信息-因此可能可以创建自己的应用程序,从JMX中提取相同类型的统计数据。
jvm-mon
这样的工具可以从命令行终端/控制台监控Java-17应用程序? - undefined我已经成功地使用了Tomcat JMX代理来从脚本中访问(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)。
set JAVA_OPTS=%JAVA_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m