Java “VisualVM显示”;“此JVM不支持”;

Java “VisualVM显示”;“此JVM不支持”;,java,profiling,visualvm,jstatd,Java,Profiling,Visualvm,Jstatd,我正在尝试用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)

我正在尝试用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进程时,我会看到所有这些选项卡,并且分析工作正常

但是,如果我远程执行此操作,我会看到如下情况:

请注意CPU窗口中的“不支持此JVM”和缩减的选项卡,不包括“探查器”。然而,正如你所看到的,我确实看到了一些数据

我正在通过
jstatd
进行连接。在服务器上,下面,我正在运行

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

像这样的答案表明这可能是由于不同的JVM版本造成的,然而,我的似乎是相同的,尽管其中一个运行在MacOS上,另一个运行在Debian上。

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

因为正如Tomas Hurka的回答正确指出的那样,远程分析不能与VisualVM一起工作,所以我使用了一些技巧使它仍然可以工作:我在远程服务器上安装了VisualVM,并通过X-forwarding访问它。这样,VisualVM就可以在本地访问流程,从而对其进行配置

  • 使用
    -X
    标志将ssh连接到服务器

    ssh-C-X@

  • 下载[VisualVM 1.4][8]

    wgethttps://github.com/visualvm/visualvm.src/releases/download/1.4/visualvm_14.zip

  • 解压归档文件

    解压缩visualvm_14.zip

  • 运行VisualVM

    /visualvm\u 14/bin/visualvm

  • 几秒钟后,您应该会看到一个VisualVM窗口弹出。它不是很快(只是因为x-forwarding不是),但对于我的用例来说,它还可以


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

    谢谢你,这也是我经过一段时间后想出来的。我可以确认,CPU使用情况与JMX配合使用,但评测仍然不起作用。