Java中JMX管理器的作用,项目中有什么具体使用?

关注者
55
被浏览
24,252

1 个回答

JMX是Java Management Extensions 的简写,即Java管理扩展,这门技术是对Java应用程序和JVM进行监控和管理的,在企业实际开发过程中,所有的程序都是需要进行监控的,没有监控,程序就相当于是裸奔。

在一些小公司可能没有监控,只注重于功能,但是在大公司中,没有监控是绝对不可能的。JMX是Java官方提供的一套用于监控Java程序和JVM运行时状态的标准API。

通过JMX,我们可以监控的内容包括:

1、服务器中各种资源的使用情况:如CPU、内存等

2、JVM内存使用情况

3、JVM中的线程情况

4、JVM中加载的类

......

很多开源软件都是用JMX来实现性能监控的,比如大名鼎鼎的Kafka:

Kafka 的每个监控指标都是以 JMX MBean 的形式定义的,具体来说,Kafka 使用基于 Metrics 的监控指标体系在方法调用的过程中设置埋点来统计 broke 端和 clients 端的各种监控指标,然后将采集的指标通过Metrics的JmxReporter送往JMX中。

JConsole是用来提供运行于Java平台中的应用程序的性能与资源消耗信息的一款工具,随着JDK一同安装,只要你的电脑上安装了JDK,就肯定安装了JConsole。JMX采集到的Kafka性能数据可以通过JConsole访问到:

通过JConsole访问JMX

Kafka 通过JMX提供了几百个性能指标,上面这样展示方式看起来肯定是有点low,利用JMX提供的接口可以让我们自己的程序获取到JMX中的数据,比如开源Kafka监控工具Kafka Eagle通过获取Kafka的JMX数据:

Kafka Eagle

推荐几个在学习JMX过程中比较不错的博客,同时也是这篇回答的参考资料:

为什么?