我在本地windows机器上使用Java来监视我的远程服务器( VisualVM )。除了"Visual “之外,我还可以获得双VM中的所有统计数据。它显示了“这个JVM不支持”。我搜索了它,发现可能是因为jstatd没有运行和连接。因此执行“-J-Djava.security.policy=/tmp/tools.policy". jstatd”它显示了一个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 java.net.Socket.connect(Socket.java:546)
at java.net.Socket.connect(Socket.java:495)
at java.net.Socket.<init>(Socket.java:392)
at java.net.Socket.<init>(Socket.java:206)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
... 8 more发布于 2017-02-08 07:42:43
在远程服务器上,
vim /tmp/tools.policy加上,
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};并启动jstatsd
jstatd -J-Djava.security.policy=/tmp/tools.policy -J-Djava.rmi.server.hostname=<public_ip>您已经准备好了在本地机器上的VisualVM中使用Visual。
发布于 2013-04-27 12:13:26
您是正确的,您需要运行jstatd才能使用VisualGC插件,因为VisualGC使用jvmstat API。看起来您正在以根用户的身份运行jstatd。您监视的应用程序是否以“root”的形式运行?/tmp/tools.policy文件是什么样的?尝试使用以下args运行jstatd:
jstatd -J-Djava.rmi.server.hostname=<IP address of shipping_pt machine> -J-Djava.security.policy=/tmp/tools.policy发布于 2013-04-26 09:58:28
VsiualVM非常依赖于版本。如果您可以连接,但有些功能不可用,我将确保您运行的Java版本完全相同。
如果无法连接,则需要更改JVM的权限。注意:默认情况下只能看到进程。
https://stackoverflow.com/questions/16233275
复制相似问题