快速业务通道

Java运行时监控,第2部分: 编译后插装和性能监控 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
DBC 驱动程序。WrappingJDBCDriver 将会识别被转换的 URL、内部载入目标驱动程序并将其与被转换的 URL 关联。此时,被转换的 URL 被 “解除转换”,并会被委托给内部驱动程序以获取与目标数据库的真正的连接。然后这个真正的连接被包装在 WrappingJDBCConnection 中,返回给请求应用程序。munge 算法是很基本的算法,只要它能够使目标 “真正的” JDBC 驱动程序完全无法识别 JDBC URL。否则的话,真正的驱动程序可能会绕过 WrappingJDBCDriver。在这个例子中,我将 jdbc:postgresql://DBSERVER:5432/runtime 真正的 JDBC URL 转换为 jdbc:!itracer!wrapped:postgresql://DBSERVER:5432/runtime。

“真正的” 驱动程序的类名和可选类路径配置项的作用是允许 WrappingJDBCDriver 查找和载入驱动程序类,这样它就能够被包装和委托了。跟踪程序模式配置项是一组正则表达式,它们指导 WrappingJDBCDriver 如何为目标数据库确定跟踪名称空间。这些表达式被应用于 “真正的” JDBC URL,并被利用,这样跟踪程序就能够给按目标数据库划分的 APM 系统提供性能指标。由于 WrappingJDBCDriver 用于多个(可能是不同的)数据库,因此按目标系统库进行划分是很重要的,这样收集的指标就可以按目标数据库进行分组了。例如,一个 jdbc:postgresql://DBSERVER:5432/runtime 的 JDBC URL 可能会生成一个 postgresql, runtime 的名称空间。

清单 13 展示了一个样例 wrapped-driver.xml 文件,它使用了映射到 PostgreSQL 8.3 JDBC Driver 的 postgres 的形象化的名称:

清单 13. 样例 wrapped-driver.xml 文件

<properties>
   <entry key="postgres.driver.prefix">jdbc:postgresql:</entry>
   <entry key="postgres.driver.class">org.postgresql.Driver</entry>
   <entry key="postgres.driver.class.path">
      C:\Postgres\psqlJDBC\postgresql-8.3-603.jdbc3.jar
   </entry>
   <entry key="postgres.tracer.pattern.0">:([a-zA-Z0-9]+):</entry>
   <entry key="postgres.tracer.pattern.1">.*\/\/.*\/([\S]+)</entry>
</properties>

该部分实现受到了一个名为 P6Spy 的开源产品的启发(参见 参考资料)。

为了展示 WrappingJDBCDriver 的使用方法,我创建了一个新的 EmpDAO Spring 测试用例的加强版。新的 Spring 配置文件是 spring-jdbc-tracing.xml,新的入口点类是 SpringRunnerJDBC。该测试用例包含几个其他的对比测试点,所以为了更明确一些,一些命名约定被更新了。我还加强了测试用例使其成为多线程的,这样就会在收集的指标中创建各种有趣的行为。而且,为了使之富于变化,DAO 的参数可以随机化。

我为这个新测试用例添加了如下的跟踪加强:

定义了两个数据源。一个使用直接的 JDBC 驱动程序,另一个使用插装的 JDBC 驱动程序。

这两个数据源可以通过 Spring 代理随意访问,插装这个代理的目的是监控获取连接的运行时间。

DAO 截取程序被加强了,它能够监控经过截取程序的并发线程的数量。

另外还衍生了另一个后台线程,用以轮询数据源中统计信息的使用情况。

所有的 WrappingJDBC 类都通过基类 WrappingJDBCCore 调用了它们的大部分 跟踪程序调用。该基类除了向它的 ITracer 发出一个直接传递(passthrough)外,还在数据库实例级发出了 rollup 级别的跟踪。这展示了 APM 系统中的一个常见的特性,凭此特性可以多次将低级的和特定指标跟踪到更高级的名称空间,提供汇总的指标。例如,任何对象类型中的全部 JDBC 调用都上升到数据库级别,从而为所有

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号