如何使用perfmon记录tomcat进程的CPU和内存使用情况

时间:2015-05-27 10:12:45

标签: java tomcat memory perfmon

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

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

感谢。

2 个答案:

答案 0 :(得分:0)

  

"我希望在特定的时间段内记录我的java应用程序进程ID的内存和CPU使用情况。"

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

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 

如果您只对这些值感兴趣,可以使用JMX。看看" MBeanBrowser"在JavaMissionControl中也是如此。例如:

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

答案 1 :(得分:0)

可以。

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

然后,您可以取消选择您不感兴趣的任何计数器。您可能希望在图表上保留“处理器时间百分比”,“工作集专用”和“专用字节”。线程计数和页面错误也可能很有趣。