【问题标题】:Can jconsole data be retrieved from the command line?可以从命令行检索 jconsole 数据吗?
【发布时间】:2010-11-14 16:52:53
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: java performance command-line monitoring jconsole


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        查看java.lang.management 包了解更多信息

        【讨论】:

          【解决方案4】:

          这是您问题的部分答案:

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

          【讨论】:

            【解决方案5】:

            我已成功使用 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) 的一个选项。

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

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

                【讨论】:

                  【解决方案8】:

                  也许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
                  

                  【讨论】:

                    【解决方案9】:

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

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

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

                    示例:

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2018-08-19
                      • 1970-01-01
                      • 2019-06-21
                      • 2019-01-28
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-02-24
                      • 2013-12-12
                      相关资源
                      最近更新 更多