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并指定用户名密码: