Java运行时监控,第2部分: 编译后插装和性能监控 - 编程入门网
is the method
// ===================================
heavilyInstrumentedMethod(factor);
// ===================================
tracer.traceIncident("Source Instrumentation",
"heavilyInstrumentedMethod", "Responses");
} catch (Exception e) {
tracer.traceIncident("Source Instrumentation",
"heavilyInstrumentedMethod", "Exceptions");
} finally {
tracer.endThreadInfoCapture("Source Instrumentation",
"heavilyInstrumentedMethod");
c = concurrency.decrementAndGet();
tracer.trace(c, "Source Instrumentation",
"heavilyInstrumentedMethod", "Concurrent Invocations");
tracer.traceIncident("Source Instrumentation",
"heavilyInstrumentedMethod", "Invocations");
}
try { Thread.sleep(200); } catch (InterruptedException e) { }
}
Java运行时监控,第2部分: 编译后插装和性能监控(3)时间:2011-02-13 IBM Nicholas Whitehead清单 1 引入了两个新的构造: ThreadInfoCapture 方法:ThreadInfoCapture 方法对于获取运行时间和目标调用前后的 ThreadMXBean 指标增量都很有帮助。startThreadInfoCapture 为当前线程捕获基准,而 endThreadInfoCapture 计算出增量和趋势。由于这些指标永远都是递增的,所以必须事先确定一个基准,再根据它计算出之后的差量。但这个场景不适用于跟踪程序的增量功能,这是因为每一个线程的绝对值都是不同的,而且运行中的 JVM 中的线程也不是保持不变的。另外还要注意跟踪程序使用了一个栈来保存基准,所以您可以(小心地)嵌套调用。要收集这个数据可是要费一番力气。图 2 展示了收集各种 ThreadMXBean 指标所需要的相对运行时间: 图 2. 收集 ThreadMXBean 指标所需的相对成本 虽然如果小心使用调用的话,收集这些指标的总开销不会很大,但是仍然需要遵循在记录日志时需要考虑的一些事项,例如不要在紧凑循环(tight loop)内进行。 并发性:要跟踪在特定时间内通过这个代码的线程数,需要创建一个计数器,该计数器既要是线程安全的又要对目标类的所有实例可用 — 在本例为 AtomicInteger 类。此种情况比较麻烦,因为有时可能多个类加载器都载入了该类,致使计数器无法精确计数,从而导致度量错误。解决这个问题的办法为:将并发计数器保存在 JVM 的一个特定的受保护位置中,诸如平台代理中的 MBean。 并发性只有在插装目标是多线程的或者共用的情况下可用,但是它是非常重要的指标,这一点我将在稍后介绍 Enterprise JavaBean(EJB)截取程序时进一步阐述。EJB 截取程序是我接下来要论述的几个基于截取的插装示例的第一个,借鉴了 清单 1 中查看的跟踪方法。 EJB 3 截取程序 发布了 EJB 3 后,截取程序就成了 Java EE 架构中的标准功能(有些 Java 应用服务器支持了 EJB 截取程序一段时间)。大多数 Java EE 应用服务器的确提供了性能指标,报告有关诸如 EJB 这样的主要组件,但是仍然需要实现自己的性能指标,因为: 您需要基于上下文的或者基于范围/阈值的跟踪。 应用服务器指标固然不错,但是您希望指标位于 APM 系统中,而不是应用服务器中。 应用服务器指标无法满足您的要求。 虽然如此,根据您的 APM 系统和应用服务器实现的不同,有些工作可能不用您再亲历亲为了。例如,WebSphere® PMI 通过 Java 管理扩展(Java Management Extensions,JMX)公开了 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |