这个问题不是关于JMX如何工作或JMX的作用。这个问题是关于JMX在生产中的标准应用程序服务器环境中的应用。它也不适用于特定的服务器。
在运行标准Java EE服务堆栈的生产环境中使用JMX监控的是什么:数据库访问(JDBC和JPA),会话EJB,JMS,Web服务器,Web服务,支持AJAX的服务?
答案 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进行检测。