您在Java应用程序中使用JMX监视什么?

时间:2018-07-20 12:40:24

标签: java performance monitoring jmx

此问题与JMX的工作原理或JMX的工作无关。据我所知,除了使用JMX之外,我们还可以获得操作系统级别的指标和JVM特定的指标(例如:垃圾收集的时间和频率,堆利用率等)

我的问题是,在Java应用程序(内部指标)中,可以使用JMX监视哪些方面?

1 个答案:

答案 0 :(得分:2)

在运行时监控您的应用状态

Java Management Extensions (JMX)是您将代码嵌入自己的应用程序中以在运行时报告应用程序运行状态的一种标准方法。

将报告代理(“探针”)嵌入更大的软件中的过程称为“instrumenting” your code。 JMX使您可以使用一个框架在运行时显示那些静态信息,因此您无需发明使您的报告系统更加完善的系统。在运行时,您或您的系统管理员可以使用许多标准监视应用程序中的任何一种,有时也称为“控制台”或“仪表板”。

JMX可以将更新传输到监视应用程序,而无需执行任何其他编程。监视应用程序不必是本地的,而是可以通过网络远程运行。您的系统管理员选择了哪个监视应用程序,以及她选择在哪个位置运行它,对应用程序中的代码没有影响。 JMX是一个缓冲区,是一个间接层,将您的编译时代码与这些实际的运行时配置问题分开。

目的是提供control room之类的this,但针对您的软件:

这里的主要优点是使用标准协议来报告状态,而不是您发明自己的协议。

应用服务器

如果您的应用程序是Web应用程序,那么您的Jakarta EE服务器或Web容器(例如Tomcat或Jetty)可能会使用JMX进行检测。因此,您可以监视其操作。例如,您可以查看当前打开了哪些用户会话。

JVM

某些JVM实现本身使用JMX进行了检测,以报告JVM操作各个方面的状态。如您的问题所述,其中一些报告可能涉及内存使用情况,垃圾收集器活动等。您的sysadmin监视应用程序可以同时监视JVM和您的应用程序,每个报告状态更新流。

操作系统

您的操作系统也可能被用来报告其内部操作,尽管不太可能使用JMX。为此,一种强大的动态跟踪框架是DTrace,它内置在macOS,FreeBSD和Solaris中。

因此,系统管理员可能正在监视她的监视应用程序上的所有四组状态信息:操作系统,JVM,应用程序服务器和您的应用程序。

阅读the Wikipedia page以获得基本信息。

读写

JMX不仅提供读访问以监视当前状态,还提供写操作。您选择的外部监视应用程序可用于以编程方式选择的方式更改应用程序内的状态。例如,您可以更改线程池或缓存的大小。

继续我们上面对控制室的比喻,您可以认为通过JMX进行的读取访问就像观察那些控制室面板上显示的仪表。

enter image description here

将写访问权看作是旋转这些面板上的旋钮,开关和滑块。

enter image description here

相关问题