33.4. JDBC事件监控

JDBC是当前J2EE应用跟数据库系统交互的主要编程接口,因此,对JDBC的监控能更好的帮助程序员或系统管理员去发现JDBC应用中的性能、死锁、堵塞等问题。

Apusic应用服务器的数据源监控提供了JDBC事件监控功能,所谓JDBC事件是指执行一条SQL语句或者提交一个事务等。当启动了监控后,可查看到应用系统中执行的SQL语句,执行时间,相关的数据库连接和事务等,并增强了JDBCTracerService的功能,可以对应用中的连接使用情况进行跟踪,超过时间没有释放则会进行提示;同时也提供一种强制关闭的方式,避免连接耗尽,影响应用的正常运行。

... 
     <SERVICE CLASS="com.apusic.jdbc.trace.JDBCTracerService">
    <ATTRIBUTE NAME="TraceAllow" VALUE="False"/>
   <ATTRIBUTE NAME="StackTraceAllow" VALUE="False"/>
   <ATTRIBUTE NAME="checkAbandoned" VALUE="False"/>
    <ATTRIBUTE NAME="removeAbandoned" VALUE="False"/>
    <ATTRIBUTE NAME="checkAbandonedTimeout" VALUE="300"/>
     <ATTRIBUTE NAME="LogAllow" VALUE="True"/>
      <ATTRIBUTE NAME="LogEventType" VALUE="statement.slowExecute,statement.execute"/>
       <ATTRIBUTE NAME="LongQueryTime" VALUE="2000"/>
    </SERVICE>
     ...

TraceAllow:是否跟踪jdbc事件,true为跟踪,false为不跟踪。如果将StackTraceAllow属性设为True且TraceAllow也为True,则可查看JDBC事件发生时的调用栈。

checkAbandoned:是否开启检测连接池泄露,值设置为true则表示开启,其默认值为false,而检测的间隔时间和checkAbandonedTimeout属性的时间一致;

checkAbandonedTimeout:连接使用时间超过该值则认为该连接为泄露,单位为秒,默认值为300;

removeAbandoned 是否强制关闭泄露的连接。如果设置为true,则会自动关闭检测为超时的数据库连接;如果设置为false,则会在后台打印警告信息,默认值为false;

LogAllow:为True则会记录日志, 默认不启用慢查询日志追踪。

LongQueryTime:是超过该值才算慢查询(默认为2000单位毫秒)

LogEventType:日志事件类型,可为多个,用,隔开,类型有如下几种

statement.execute

connection.close

connection.setAutoCommit

connection.commit

transaction.begin

transaction.complete

transaction.timeout

statement.slowExecute