我正在尝试使用VisualVM 1.4分析远程JVM。我正在使用以下OpenJDK版本在本地运行macOS High Sierra 10.13.6:
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不支持”和减少的选项卡(不包括“ 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上,我的却似乎是相同的。
答案 0 :(得分:1)
缺少CPU使用情况信息与不同的JDK版本无关。您看不到CPU使用率数据,因为jvmstat(通过jstatd导出)不提供此类信息。如果要查看CPU使用率,则需要使用JMX连接。 JMX还允许您进行CPU和内存采样。仅本地应用程序支持分析。
答案 1 :(得分:0)
因为,正如Tomas Hurka的回答正确指出的那样,远程概要分析不适用于VisualVM,所以我使用了一点技巧使其仍然起作用:我已经在远程服务器上安装了VisualVM,并通过X-forwarding访问了它。这样,VisualVM可以在本地访问该进程并对其进行配置。
通过-X
标志SSH进入服务器
ssh -C -X <user>@<host>
下载[VisualVM 1.4] [8]
wget https://github.com/visualvm/visualvm.src/releases/download/1.4/visualvm_14.zip
解压缩档案文件
unzip visualvm_14.zip
运行VisualVM
./visualvm_14/bin/visualvm
几秒钟后,您应该会看到一个VisualVM窗口弹出。速度不是很快(只是因为x转发不是),但是在我的用例中还可以。
实现此目标的另一种方法可能是使用VNC,但我还没有尝试过。缺点是您必须安装所有台式机软件包,而这些软件包可能不需要在服务器上。