快速业务通道

Java运行时监控,第1部分: Java系统运行时性能和可用性监控 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
PlatformMBeanServer(可以通过 JVM 内部的 MBeanServerConnection 来连接它)访问 MXBeans。在远程部署中,收集器运行在一个单独的进程中,并使用某种形式的 JMX Remoting 来连接目标 JVM。这可能没有本地部署那么高效,但它不需要在目标系统中部署任何额外的组件。JMX Remoting 不在本文的讨论范围之内,但它的实现方法非常简单:部署一个 RMIConnectorServer 或在 JVM 中启用外部连接(请参阅 参考资料)。

示例 JMX 收集器

本文的示例 JMX 收集器(请阅读 下载 一节,获取本文的完整源代码)包含三个单独的方法,可用于获取 MBeanServerConnection。该收集器可以:

通过调用静态 java.lang.management.ManagementFactory.getPlatformMBeanServer() 方法,为本地 JVM 的平台 MBeanServer 获取一个 MBeanServerConnection。

通过调用静态 javax.management.MBeanServerFactory.findMBeanServer(String agentId) 方法,为部署在本地 JVM 平台中的备用 MBeanServer 获取一个 MBeanServerConnection。注意,一个 JVM 中可以存在多个 MBeanServer,并且,Java Platform, Enterprise Edition (Java EE) 服务器等较为复杂的系统几乎始终拥有特定于应用服务器的 MBeanServer,它是独立的且有别于平台 MBeanServer(请参阅 交叉注册 MBeans 侧边栏)。

使用 javax.management.remote.JMXServiceURL 通过标准 RMI Remoting 获取一个远程 MBeanServerConnection。

清单 2 是摘录自 JMXCollector collect() 方法的代码段,它显示了 ThreadMXBean 中的收集和线程跟踪活动。点击 此处 查看完整清单:

清单 2. 示例 JMX 收集器的 collect() 方法的部分代码,它使用 ThreadMXBean

. . objectNameCache.put(THREAD_MXBEAN_NAME, new ObjectName(THREAD_MXBEAN_NAME)); . . public void collect() {   CompositeData compositeData = null;   String type = null;   try {    log("Starting JMX Collection");    long start = System.currentTimeMillis();    ObjectName on = null; . .    // Thread Monitoring    on = objectNameCache.get(THREAD_MXBEAN_NAME);    tracer.traceDeltaSticky((Long)jmxServer.getAttribute(on,"TotalStartedThreadCount"),     hostName, "JMX", on.getKeyProperty("type"), "StartedThreadRate");    tracer.traceSticky((Integer)jmxServer.getAttribute(on, "ThreadCount"), hostName,     "JMX", on.getKeyProperty("type"), "CurrentThreadCount"); . .    // Done    long elapsed = System.currentTimeMillis()-start;    tracer.trace(elapsed, hostName, "JMX", "JMX Collector",      "Collection", "Last Elapsed Time");    tracer.trace(new Date(), hostName, "JMX", "JMX Collector",      "Collection", "Last Collection");    log("Completed JMX Collection in ", elapsed, " ms.");   } catch (Exception e) {    log("Failed:" + e);    tracer.traceIncident(hostName, "JMX", "JMX Collector",      "Collection", "Collection Errors");   } }

Java运行时监控,第1部分: Java系统运行时性能和可用性监控(8)

时间:2011-02-13 IBM Nicholas Whitehead

清单 2 中的代码将跟踪 TotalThreadsStarted 和 CurrentThreadCount 的值。由于它是轮

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号