JConsole/JvisualVM 远程连接失败处理

今天在使用JConsole进行远程连接时,发现IP和端口在Windows下是可以远程telnet的,但是,使用JConsole时却无法连接。

我的环境如下:

Windows下运行JConsole,准备远程连接Ubuntu 16.04下的一个测试的Java进程;

Ubuntu 16.04 运行了一个Java进程,其运行的参数如下:

java -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 进程名

于是,我直接在Windows下运行JvisualVM,然后输入ip+端口进行连接,收到了如下错误。

我的处理过程:

1. 检查linux的防火墙是否关闭;ufw status,如果是active的,运行 sudo ufw disable来禁用防火墙;

2. 检查在Windows下是否能够telnet 8999端口; 运行cmd,然后在cmd中敲入:telnet 192.168.197.136 8999,如下截图表示不通,这时请关闭Linux防火墙或者配置防火墙规则,打开8999端口;

 

3. 上述两步都完成以后(关闭防火墙,且能telnet 8999端口),如果还不能访问,就进行如下的操作,查看hostname -i 是不是当前服务器的IP地址,如果不是,跳到第四步;

4. 修改hostname对应的IP地址:sudo vi /etc/hosts,修改完之后,重新运行hostname -i,应该就是当前服务器的IP了。

至此,再次运行服务器上的java进程,通过JvisualVM的远程访问功能就能访问和监控Java进程的相关情况了。

原文地址:https://www.cnblogs.com/scofield-1987/p/7620496.html