我在远程服务器(UbuntuServer14.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中没有显示任何应用程序:


发布于 2015-10-19 16:15:01
显然,VisualVM希望您远程连接的服务器(在您的例子中是UbuntuServer14.04)有一个一致的DNS名称。因此,如果要将IP地址而不是DNS名称指定到VisualVM,则应该在jstatd启动行中添加以下内容:
-J-Djava.rmi.server.hostname=<the IP address to your Ubuntu server here>还有,我发现在某些VisualVM版本中指定端口选项(在您的例子中是-p 9099 )是不支持的:
已知的限制:本VisualVM中的发布了jstatd的默认端口和rminame,在启动jstatd实用程序时必须使用rminame,即不支持使用-p和-n选项。VisualVM故障排除指南
总之,应该尝试在Ubuntu上运行以下jstatd行的:
jstatd -J-Djava.security.policy=.jstatd.all.policy -J-Djava.rmi.server.hostname=10.82.83.117 -J-Djava.rmi.server.logCalltrue源
发布于 2017-10-04 18:01:24
jstatd -p 1099 -J-Djava.rmi.sver.hostname=10.250.105.112 -J-Djava.security.policy=<(echo 'grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};') 非常适合我
发布于 2020-01-10 12:26:14
万一这个能帮到别人..。
我遇到了一些问题,jstatd和在VisualVM中添加普通的JMX连接都不起作用。前者不会给出任何错误信息,只是不会列出任何应用程序。后者会让我在说"Cannot connect to some-server:30648 using service:jmx:rmi:///jndi/rmi://some-server:30648/jmxrmi时出错。
试图使用优秀的sjk-plus工具手动连接到JMX服务会导致以下错误:
$ java --add-opens java.base/jdk.internal.perf=ALL-UNNAMED \
--add-opens jdk.attach/sun.tools.attach=ALL-UNNAMED \
-Dsjk.breakCage=false \
-jar scripts/sjk-plus-0.14.jar
mx --get --allMatched -b com.acme.some.package:name=* -f Count \
-s some-server:30648
JMX Connection failed: java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is:
java.net.ConnectException: Connection refused (Connection refused)你看到了吗? 127.0.1.1,那个奇怪的IP地址是干什么的?
这是由服务器上的/etc/hosts文件中的特定条目引起的:
user@some-server:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 some-server
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters更改some-server文件中的hosts条目并重新启动进程使其可以使用sjk-plus,也可以在jstatd中发现。
https://stackoverflow.com/questions/32515727
复制相似问题