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

12

我使用jstatd监视远程应用程序时,无法对CPU消耗进行分析或监控。堆内存监视(前提是不使用G1)可以正常工作。在CPU图窗口中,jvisualvm显示“此JVM不支持”。是否需要更改我的设置?谷歌搜索结果非常少。本地环境为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个回答

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连接读取以显示分析信息。

可以运行!感谢VisualVM 1.2.1和插件建议并已接受。 - yawn
2
跟进:JMX在1.6中默认启用安全性。对于开发人员来说,可能希望禁用安全性,请参见http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#no_security - yawn
“Visual VM不支持代码和分配的远程分析” - 我们现在使用的jvisualvm 1.3.8版本是否仍然如此? - Yar
在我的情况下(IntelliJ + JBoss),添加“-Dcom.sun.management.jmxremote.port”就足够了。我用于完全监控的VM选项是:-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Dcom.sun.management.jmxremote=true。 - Benj
1
我不确定为什么,但我也必须添加“-Djava.rmi.server.hostname=localhost”。 - debiasej

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

步骤3:重要提示

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

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

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

另外,尝试使用JVMMonitor作为Eclipse独立程序监视的不错插件。


1

这是因为远程版本(尽管略微)高于本地版本吗?


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接