32

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

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

4

5 回答 5

30

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

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

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

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

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

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

对于EhCache,我监控缓存中的条目数,每分钟的命中数和未命中数,

业务应用程序级别,我开发了一个@Profiled 注解来监控调用次数、异常次数和每分钟的总持续时间。

如果您对此类指标感兴趣,我们开发了许多 JMX 附加功能(dbcp、util.concurrent、jms、@profiled 注释)并将所有这些与基于 Spring XML 命名空间的配置、Hyperic HQ 插件、监控 jsp 页面等打包在一起

详细信息在这里:http ://code.google.com/p/xebia-france/wiki/XebiaManagementExtras 。

所有这些代码都在商业友好的开源 Apache 软件许可证 2 下获得许可,部署在 Maven 中央存储库上,可作为 jar 下载,并可在 Google Code Subversion 服务器上以您想要的方式集成。

希望这可以帮助,

西里尔(Xebia)

于 2010-11-23T22:28:46.643 回答
8

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

于 2009-11-05T22:16:19.193 回答
5

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

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

于 2009-11-05T16:08:18.813 回答
1

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

于 2009-11-05T22:30:46.660 回答
1

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

于 2009-11-05T20:38:04.940 回答