我在远程服务器(Ubuntu 服务器 14.04)上启动了一个 jstatd
:
jstatd -J-Djava.security.policy=.jstatd.all.policy -J-Djava.rmi.server.logCalltrue -p 9099
并尝试在 Windows 上使用 jvisualvm 连接到它。我检查了 netstat
,连接已建立,并且在远程它记录了调用:
Sep 11, 2015 12:48:51 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(4)-10.82.199.0: [10.82.199.0: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
Sep 11, 2015 12:48:55 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(4)-10.82.199.0: [10.82.199.0: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
Sep 11, 2015 12:48:59 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(4)-10.82.199.0: [10.82.199.0: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
所有迹象都表明它正在发挥作用。但是 jvisualvm 中没有显示任何应用程序:
最佳答案
显然,VisualVM 希望您尝试远程连接的服务器(在您的例子中是 Ubuntu Server 14.04)具有一致的 DNS 名称。因此,如果您为 VisualVM 指定一个 IP 地址而不是 DNS 名称,您应该将以下内容添加到您的 jstatd 启动行:
-J-Djava.rmi.server.hostname=<the IP address to your Ubuntu server here>
此外,我发现在某些 VisualVM 版本中不支持指定端口选项(在您的情况下为 -p 9099):
Known limitation: In this VisualVM release the jstatd's default port and rminame must be used when starting the jstatd utility, i.e. the use of the -p and -n options is not supported. VisualVM Troubleshooting Guide
总而言之,您应该尝试在您的 Ubuntu 服务器上运行以下 jstatd 行:
jstatd -J-Djava.security.policy=.jstatd.all.policy -J-Djava.rmi.server.hostname=10.82.83.117 -J-Djava.rmi.server.logCalltrue
来源:
关于java - jvisualvm 连接到远程 jstatd 不显示应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515727/