在VisualVM + Jstatd 监控的时候,是Java进程的CPU、线程、MBean信息。如果要获取这些信息那就需要用到JMX方式了。
自JAVA6之后,java程序在启动之后都会在JVM内部创建一个JMX Agent,JMX Agent 会启动一个MBean server组件,把MBeans注册到它里面,然后暴露给JMX client。简单来说就Java程序可以通过JMX 暴露给JMX client。而这个JMX client 就是VisualVM。
启用JXM
在启动Java程序的时候,必须带上几个JMX 相关的System properties 参数
java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=2223 -Dcom.sun.management.jmxremote.rmi.port=2223 -Djava.rmi.server.hostname=192.168.124.18 visualvmtest-0.0.1-SNAPSHOT.jar
比如启动一个jar,里面就一个线程计算。参数如下:
-Dcom.sun.management.jmxremote #开启远程
-Dcom.sun.management.jmxremote.port=2223 #开启jmx监控的端口
-Dcom.sun.management.jmxremote.ssl=false #是否开启ssl(生产环境使用这种方式)
-Dcom.sun.management.jmxremote.authenticate=false #是否需要权限认证(账户密码)
-Djava.rmi.server.hostname=192.168.124.18” #本机IP地址
程序正常启动之后就可以使用client进行连接了。
PS:使用SSL方式在另一篇文章中介绍。
使用visualVM链接
在这里就可以监控到一些信息了