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