VisualVM显示“此JVM不支持”

问题描述 投票:0回答:2

我试图用VisualVM 1.4配置远程JVM。我在本地运行macOS High Sierra 10.13.6,具有以下OpenJDK版本:

java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.181-b13, mixed mode)

服务器使用以下OpenJDK运行Debian Stretch:

java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

当我在本地监视JVM进程时,我看到所有这些选项卡和分析工作正常。

enter image description here

但是,如果我远程执行此操作,我会看到以下内容:

enter image description here

请注意CPU窗口“不支持此JVM”和缩减选项卡,不包括“Profiler”。但是,正如您所看到的,我确实看到了一些数据。

我通过jstatd连接。在服务器上,跟随this article,我正在运行

jstatd -J-Djava.security.policy=/home/brandwatch/jstatd.all.policy -J-Djava.rmi.server.hostname=10.2.156.160 -Djava.rmi.server.logCalltrue

this这样的答案表明这可能是由于不同的JVM版本,但是,我的看起来是相同的,尽管其中一个在MacOS上运行,其中一个在Debian上运行。

java profiling visualvm jstatd
2个回答
1
投票

缺少CPU使用率信息与不同的JDK版本无关。您没有看到CPU使用率数据,因为jvmstat(通过jstatd导出)不提供此类信息。如果要查看CPU使用情况,则需要使用JMX连接。 JMX还允许您进行CPU和内存采样。仅对本地应用程序支持性能分析。


0
投票

因为,正如Tomas Hurka的答案正确指出的那样,远程分析不适用于VisualVM,我使用了一些小工具仍然可以使它工作:我已经在远程服务器上安装了VisualVM并通过X-forwarding访问它。这样,VisualVM可以在本地访问该进程,从而对其进行概要分析。

  1. 使用-X标志进入服务器ssh ssh -C -X <user>@<host>
  2. 下载[VisualVM 1.4] [8] wget https://github.com/visualvm/visualvm.src/releases/download/1.4/visualvm_14.zip
  3. 解压缩档案 unzip visualvm_14.zip
  4. 运行VisualVM ./visualvm_14/bin/visualvm

几秒钟后,您会看到一个VisualVM窗口弹出。它不是很快(只是因为x-forwarding不是),但对于我的用例它没问题。

实现这一目标的另一种方法可能是使用VNC,但我没有尝试过。缺点是您必须安装所有桌面软件包,这可能是服务器上不需要的。

© www.soinside.com 2019 - 2024. All rights reserved.