35

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

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

谢谢

4

9 回答 9

12

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

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

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

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

于 2009-07-28T17:09:43.297 回答
11

也许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
于 2013-04-07T11:24:18.753 回答
8

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

于 2011-03-14T17:53:12.243 回答
7

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

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

于 2009-07-28T15:05:32.290 回答
6

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

  • Jmxterm提供对应用服务器上所有 MBean 的完全访问权限,无论是否交互运行,
  • jmxbox只能通过 TCP 套接字连接,不能直接连接到具有 PID 的本地进程
于 2013-01-09T12:47:33.120 回答
4

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

  • jvm 进程
  • cpu 和 GC 使用率
  • 堆使用和大小
  • 顶级线程

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

样本:jvm-mon

于 2017-02-08T15:11:52.487 回答
2

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

于 2009-07-28T16:35:22.180 回答
0

这是您问题的部分答案:

set JAVA_OPTS=%JAVA_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m 
于 2009-07-28T17:51:26.940 回答
0

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

于 2010-11-04T17:35:20.540 回答