一、JMC介绍
JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。
使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。
官方地址:https://www.oracle.com/java/technologies/jdk-mission-control.html
主要部分
- JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。
- JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。
- JFR:提供了一种从操作系统层、JVM 和 Java 应用程序层收集事件的方式。收集的事件包括线程延时事件,例如休眠(sleep)、等待(wait)、锁竞争、I/O、GC 和方法分析。
- Java Mission Control 插件使用 Java Management Extensions (JMX) 代理连接到 JVM
二、准备条件
使用jmc对远程Java进行进行JMX监控及JFR需要具备两个前提条件,即支持JMX连接和启动JFR飞行记录。
1、支持JMX连接的配置
要配置远程Java进程支持JMX连接,需要在启动Java进程时加入以下属性:
-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
上述配置的意义是开启JMX连接端口7091,同时配置不需要ssl安全认证方式连接(一般我们的监控的服务器都是在本地局域网中,所以没有必要配置ssl安全认证方式连接,若要配置ssl安全认证方式连接,还需要配置连接的用户名及密码等)
2、取消锁定商业功能以开启飞行记录的配置
取消锁定商业功能有两种方式:
a、使用jcmd命令解锁
使用用 VM.unlock_commercial_features 参数取消锁定商业功能,命令如下:
jcmd pid VM.unlock_commercial_features
b、应用程序启动参数中增加解锁参数
解锁参数如下:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder