转载:https://www.cnblogs.com/think-in-java/p/6138439.html
JConsole远程连接还是有一点坑的。这里记录一下配置过程,好记性不如烂笔头。
1.在远程机的tomcat的catalina.sh中加入配置:
1、首先需要停止正在运行的服务
2、然后在Linux的服务器启动项中添加如下信息:
-Djava.rmi.server.hostname=192.168.1.122
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=911
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
比如说我需要了解在压力测试过程中Linux系统中JAVA进程的资源占用情况,那么我就可以在
JAVA进程
的启动项中加入上述信息,这样通过本机Windows中JDK的Jconsole来监控了。
其中第一个参数可以用来设置欲连接的Linux机器的IP地址,该项必须设置,否则远程连接会因为解析到127.0.0.1出现连接失败的情况。
如果不设置该项,也可以通过修改Linux的/etc/hosts文件,使hostname -i指向正确的IP,所以还是该选项更为方便。
第三个参数是设置欲连接到Linux机器上的端口号,在不跟Linux中现有端口冲突的情况下,可随意设置该端口
2.配置权限文件
[root@localhost bin]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/management/ [root@localhost management]# cp jmxremote.password.template jmxremote.password [root@localhost management]# vi jmxremote.password
monitorRole QED
controlRole chenqimiao
3.配置权限文件为600
1
|
[root@localhost management]
# chmod 600 jmxremote.password jmxremote.access
|
这样基本配置就结束了,下面说两个坑,第一个就是防火墙的问题,要开放指定端口的防火墙,我这里配置的是12345端口,第二个是hostname的问题
1
|
[root@localhost lib]
# vi /etc/hosts
|
请将127.0.0.1修改为本地真实的IP,我的服务器IP是192.168.202.121
最后的话
就能看到你想要的咯。
另外给用VisualVM 用户一个温馨提示:使用VisualVM进行远程连接的配置和JConsole是一摸一样滴。
错误: 代理抛出异常错误: java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException
mac上运行tomcat时提示以下错误:
错误: 代理抛出异常错误: java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: xxx: xxx: nodename nor servname provided, or not known
解决办法:
修改/etc/hosts
将
127.0.0.1 localhost
- 1
- 2
改成
127.0.0.1 localhost xxx
- 1
即可~ xxx
是异常中xxx
对应的内容