注意:本例里,我用的是jdk17
通常用jdk自带的jconsole,或者想要功能强大点的使用visualVM
需要java服务器在启动的时候加上以下参数
-Dcom.sun.management.jmxremote
启用jxm远程连接
-Djava.rmi.server.hostname=10.1.3.99
指定jxm监听地址,本机ip或者域名都可以
-Dcom.sun.management.jmxremote.port=3214
指定jxm监听端口
-Dcom.sun.management.jmxremote.ssl=false
不需要ssl连接
-Dcom.sun.management.jmxremote.authenticate=false
不需要验证
为了安全考虑,可以加上验证
-Dcom.sun.management.jmxremote.authenticate=true
需要验证用户名密码
-Dcom.sun.management.jmxremote.access.file=$JAVA_HOME/conf/management/jmxremote.access
用户配置文件
-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/conf/management/jmxremote.password
用户密码配置文件
上面两个配置文件,通常在jdk目录下,不同版本对应查找一下
#ll $JAVA_HOME/conf/management
jmxremote.access
jmxremote.password.template
management.properties
#cat jmxremote.access
上面一堆注释。。。
monitorRole readonly
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
#cp jmxremote.password.template jmxremote.password
#vim jmxremote.password
把下面两行的注释去除(并且行首不能有空格),这就是jmx默认的两个用户名和密码,例如monitorRole用户、密码是QED
monitorRole QED
controlRole R&D
#chmod 600 jmxremote.password
一定要设置这个权限,不然运行会报密码文件不安全的错误
java服务端的配置完成了,可以启动客户端连接试试了
用jconsole举例
连接--》新建连接--》远程连接--》输入hostname:port,如果启用了用户验证,还要输入用户名、口令--》连接--》选择"不安全的连接"--》操作完成