我正在尝试使用 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)
Run Code Online (Sandbox Code Playgroud)
服务器运行带有以下 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)
Run Code Online (Sandbox Code Playgroud)
当我在本地监视 JVM 进程时,我会看到所有这些选项卡,并且分析工作正常。
但是,如果我远程执行此操作,我会看到如下内容:
请注意显示“此 JVM 不支持”的 CPU 窗口和减少的选项卡,不包括“Profiler”。然而,正如你所看到的,我确实看到了一些数据。
我正在通过 进行连接jstatd。在服务器上,按照本文,我正在运行
jstatd -J-Djava.security.policy=/home/brandwatch/jstatd.all.policy -J-Djava.rmi.server.hostname=10.2.156.160 -Djava.rmi.server.logCalltrue
Run Code Online (Sandbox Code Playgroud)
像这样的答案表明这可能是由于不同的 JVM 版本造成的,但是,我的似乎是相同的,尽管其中一个运行在 MacOS 上,另一个运行在 Debian …
我在我的本地Windows机器上使用Java VisualVM来监视我的远程服务器(Linux).除了" Visual GC " 之外,我能够在Bisual VM中获取所有统计数据.它显示"此JVM不支持".我用谷歌搜索它,发现它可能是因为jstatd没有运行和连接.所以执行了" jstatd -J-Djava.security.policy =/tmp/tools.policy ".它显示了一个ip" 175.41.139.225 ".我无法理解为什么它试图连接到这个IP.它不是我的远程机器的ip,也不是我的本地机器的ip.
[root@shipping_pt mail]# jstatd -J-Djava.security.policy=/tmp/tools.policy
Could not contact registry
Connection refused to host: 175.41.139.225; nested exception is:
java.net.ConnectException: Connection refused
java.rmi.ConnectException: Connection refused to host: 175.41.139.225; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:177)
at sun.tools.jstatd.Jstatd.bind(Jstatd.java:57)
at sun.tools.jstatd.Jstatd.bind(Jstatd.java:66)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:143)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
at …Run Code Online (Sandbox Code Playgroud)