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

时间:2009-11-05 15:53:06

标签: java performance java-ee monitoring jmx

这个问题不是关于JMX如何工作或JMX的作用。这个问题是关于JMX在生产中的标准应用程序服务器环境中的应用。它也不适用于特定的服务器。

在运行标准Java EE服务堆栈的生产环境中使用JMX监控的是什么:数据库访问(JDBC和JPA),会话EJB,JMS,Web服务器,Web服务,支持AJAX的服务?

5 个答案:

答案 0 :(得分:29)

JVM 级别,我监控每分钟的垃圾收集持续时间

Servlet容器级别,我监控请求数量,例外数量(4xx和5xx代码),每分钟请求持续时间总和,

SOAP 级别,我会监控调用次数,异常次数和次数。每个操作和每分钟的调用总和,

Web MVC框架级别,我会监控调用次数,异常次数和数量。每个动作和每分钟的调用总和,

对于池(数据源,线程池/执行器服务),我监视活动计数,

对于 JMS 连接,我会监控已发送的&每分钟收到的消息,以及活动接收者的数量,

对于 EhCache ,我会监控缓存中的条目数,点击次数和次数。每分钟错过,

业务应用程序级别,我开发了一个@Profiled注释来监控调用次数,例外数量和每分钟总持续时间。

如果您对这种指标感兴趣,我们开发了许多JMX附加功能(dbcp,util.concurrent,jms,@ profileof annotation),并使用基于Spring XML命名空间的配置,Hyperic HQ插件,监控jsp页面打包所有这些内容,等

详细信息如下:http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras

所有这些代码都是在商业友好的开源Apache软件许可证2下许可的,部署在Maven Central Repository上,可以作为jar下载并在Google Code Subversion服务器上提供,以便按照您希望的方式进行集成。

希望这有帮助,

Cyrille(Xebia)

答案 1 :(得分:8)

我已经使用JMX公开了一个允许动态调整Log4J Logger级别的MBean。事实证明,这对于我们不希望修改所有节点上的log4j配置文件以更改指定记录器的日志级别的集群应用程序非常有用。

答案 2 :(得分:5)

我最常见的要求是监控线程数和内存。我最近的工作涉及大量线程服务器调度到网格,监视线程使用情况(衡量服务器正在执行的调度工作量)非常重要。内存与线程使用密切相关(部分原因是与每个线程关联的对象,部分原因是每个线程隐式堆栈分配)。

我们JMX也启用了我们的工作负载队列数据。以上监控排队工作项的症状效果,但最终我们想要监控实际的工作队列。通过JMX公开关键组件是值得的,以便更清楚地了解正在发生的事情。

答案 3 :(得分:1)

在之前的项目中,我们监控了线程数和内存,HTTP会话数和查询缓存的大小。 JMX对缓存的另一个好处是你可以强制刷新。

答案 4 :(得分:1)

有点旧,但你可以使用JMX更多。目前我正在使用JMX来热部署/热修复组件。动态添加现有组件的功能(过滤器等)。 JMX适用于同一JVM上的组件之间的通信。我创建的每个组件都使用JMX进行检测。