jvisualvm连接到远程jstatd没有显示应用程序

zor*_*rro 10 java jvm jvisualvm jstatd

jstatd在远程服务器上启动了一个(Ubuntu Server 14.04):

jstatd -J-Djava.security.policy=.jstatd.all.policy -J-Djava.rmi.server.logCalltrue -p 9099
Run Code Online (Sandbox Code Playgroud)

并尝试在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)]
Run Code Online (Sandbox Code Playgroud)

所有迹象都表明它正在发挥作用.但是jvisualvm中没有应用程序显示:

在此输入图像描述

在此输入图像描述

jai*_*bec 20

显然,VisualVM需要为您尝试远程连接的服务器(在您的情况下为Ubuntu Server 14.04)提供一致的DNS名称.因此,如果您要为VisualVM 指定IP地址而不是DNS名称,则应将以下内容添加到jstatd启动行:

-J-Djava.rmi.server.hostname=<the IP address to your Ubuntu server here>
Run Code Online (Sandbox Code Playgroud)

另外,我发现在某些VisualVM版本中不支持指定端口选项(在您的情况下为-p 9099):

已知限制:在此VisualVM版本中,启动jstatd实用程序时必须使用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
Run Code Online (Sandbox Code Playgroud)


资料来源:

  1. http://www.catify.com/2012/09/26/remote-monitoring-with-visualvm/
  2. 它对我有用:)