远程jvisualvm会话不支持CPU和分析

时间:2009-11-18 13:03:46

标签: java jmx jvisualvm

监控远程应用程序时(使用jstatd)我既不能分析也不能监控CPU消耗。堆监控(假设我不使用G1)有效。 jvisualvm提供消息“此JVM不支持”。在CPU图形窗口中。

我的设置中是否有任何遗漏?谷歌的结果很少。

本地环境(Mac OS X 10.6):

java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)

远程环境(Linux版本2.6.16.27-0.9-smp(gcc版本4.1.0(SUSE Linux))):

java version "1.6.0_16" Java(TM) SE
Runtime Environment (build
1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)

本地监控的工作方式与宣传的一样。

4 个答案:

答案 0 :(得分:14)

Visual VM不支持远程分析代码和分配。这很糟糕,但是如果要启用CPU图,可以通过启用JMX

来实现
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=12345

您可能还需要根据网络添加一些身份验证设置。 JMX设置将为您提供CPU使用率,线程状态以及远程jstack。

可以在此处找到远程版本的功能列表: Visual VM features

修改 获取最新版本的visual vm 1.2.1并下载VisaulVM-Sampler。这将从JMX连接读取以显示分析信息。

答案 1 :(得分:4)

  

连接eclipse java程序。

第1步:确保您的Eclipse - >偏好 - > Java - >已安装的JRE指向您启动visualvm的相同jdk。

第2步:确保右键单击 - >运行配置具有以下

-Dcom.sun.management.jmxremote = true -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.port = 16001 < / p>

第3步:重要遵循以下建议。

https://visualvm.java.net/troubleshooting.html#jpswin2

描述:VisualVM启动后立即显示一个错误对话框,指出无法监视本地应用程序。本地运行的Java应用程序显示为(pid ###)。

解决方案:如果用户名包含大写字母,则可能会在Windows系统上发生这种情况。在这种情况下,username是UserName,但JDK创建的jvmstat目录是%TMP%\ hsperfdata_username。要解决此问题,请退出所有Java应用程序,删除%TMP%\ hsperfdata_username目录并创建新的%TMP%\ hsperfdata_UserName目录。

另外尝试 JVMMonitor 是eclipse独立程序监控的不错插件。

答案 2 :(得分:1)

是因为远程版本(虽然稍微)大于本地版本吗?

答案 3 :(得分:0)

我可以通过为JMX和RMI提供相同的端口号来解决此问题。

-Dcom.sun.management.jmxremote.port=29898 
-Dcom.sun.management.jmxremote.rmi.port=29898

请参见Why Java opens 3 ports when JMX is configured?