【问题标题】:how to use perfmon to log the CPU and memory usage for a tomcat process如何使用 perfmon 记录 tomcat 进程的 CPU 和内存使用情况
【发布时间】:2015-05-27 10:12:44
【问题描述】:

我的 Java 应用程序部署在 Tomcat 应用程序服务器上。使用 TaskManager,我可以查看 CPU 和内存使用情况。 Jconsole 显示的相同进程 ID 的内存使用情况与任务管理器显示的内存使用情况不同。这是因为任务管理器显示整个系统内存,而 Jconsole 显示分配给 JVM 的内存。如果我的理解有误,请纠正我。

我想记录我的 java 应用程序进程 ID 在特定时间跨度内的内存和 CPU 使用情况。如果我尝试使用 perfmon,它会显示所有进程的使用情况。有什么方法可以让我在 perfmon 中为一个特定的进程 ID 配置以及我需要在其中选择哪些计数器。

谢谢。

【问题讨论】:

    标签: java tomcat memory perfmon


    【解决方案1】:

    “我想记录我的 java 应用程序进程 ID 在特定时间跨度内的内存和 CPU 使用情况。”

    您可以使用 JavaMissionControl 中的 FlightRecorder。它可以在 Oracle JDKs 的二进制目录中找到(我认为 > 6),它被称为“jmc.exe”。将以下参数添加到Tomcat,可能是CATALINA_OPTS:

    -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
    

    如果您只对可以使用 JMX 的值感兴趣。也可以看看 JavaMissionControl 中的“MBeanBrowser”。例如:

    MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
    double cpuLoad = (double) mbeanServer.getAttribute(new ObjectName("java.lang", "type", "OperatingSystem"), "SystemCpuLoad");
    

    【讨论】:

    • 我使用的是 jdk 6,所以 jmc.exe 不存在。任何其他选项。
    【解决方案2】:

    是的,你可以。

    1. 点击 + 添加计数器
    2. 选择进程
    3. 从选定对象的实例列表中选择 Tomcat。
    4. 点击添加>>

    然后您可以取消选择您不感兴趣的任何计数器。您可能希望在图表上保留 % Processor Time、Working Set Private 和 Private Bytes。线程数和页面错误也很有趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 2013-05-01
      • 2010-12-01
      • 2013-09-26
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多