zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JMC连接远程jvm

JVM连接 远程
2023-09-11 14:16:28 时间

JDK Mission Control (JMC),jdk7-jdk10的bin目录下都有,高版本jdk可以直接去Oracle官网下载:https://www.oracle.com/java/technologies/javase-downloads.html(往下滑就找到了),还有官方手册:https://docs.oracle.com/en/java/java-components/jdk-mission-control/8/user-guide/security-compliance-jdk-mission-control.html

虚拟机启动参数:

指定被监控的jvm开启的端口

-Dcom.sun.management.jmxremote.port=xxxx

指定被监控的jvm的ip
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx 

不启用ssl
-Dcom.sun.management.jmxremote.ssl=false 

不使用用户名和密码
-Dcom.sun.management.jmxremote.authenticate=false

 

我在我的centos7虚拟机(192.168.1.171)上启动一个java程序:

java -Dcom.sun.management.jmxremote.port=4433 -Djava.rmi.server.hostname=192.168.1.171 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar xxx.jar

使用JMC新建连接:

然后就可以启动JMX控制台了:

 

还可以指定用户名和密码:

设置-Dcom.sun.management.jmxremote.authenticate=true

-Dcom.sun.management.jmxremote.password.file=指定密码文件

-Dcom.sun.management.jmxremote.access.file=指定权限文件

 

先写两个配置文件:(readonly权限有的JMC项显示不出来,例如堆栈)

设置文件的权限:chomd 600 jmc.*

使用新参数指定文件并启动jvm:

java -Dcom.sun.management.jmxremote.port=4433 -Djava.rmi.server.hostname=192.168.1.171 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=jmc.pass -Dcom.sun.management.jmxremote.access.file=jmc.access -jar xxx.jar

新建JMC并指定用户名密码: