如何使用P6SPY工具来监控应用程序中数据库的性能
监控方案如下:
在应用程序中利用P6Spy工具来对数据库操作进行监控,从中发现应用系统存在的性能瓶颈,得到相关的优化建议并最终到相应的解决办法。IronEye SQL 属于IronEye,一个专注于 JDBC 性能的监控和测试的开源项目。利用IronEye SQL 用于监测 Java 应用和数据库服务器之间查询开销的时间,诊断在性能方面是否存在着相关问题。
P6Spy 对数据库进行拦截监控的处理过程如下图:
项目配置如下:
1)把 irontracksql.jar, p6spy.jar放到应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
2)把 spy.properties 放到%WebApp%/WEB-INF/classess/ 目录下,注意不是 lib/ 目录;
3)修改程序的数据库驱动名称为 P6Spy 的驱动程序名称 ine.spy.P6SpyDriver
4)打开配置文件 spy.properties 文件,修改下列属性;
realdriver=com.ibm.db2.jcc.DB2Driver
executionthreshold=2000 (P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才进行记录 Log)
outagedetection=true (P6Outage 模块执行时间,设置是否记录较长时间运行的语句)
outagedetectioninterval=2 (P6Outage 模块执行时间设置,以秒为单位,只有当超过这个时间才进行记录 Log)
5)修改设置module.ibeam=com.irongrid.ibeam.server.IBeamFactory,监听端口号 monito
rport=2000
6)先运行 java -jar irontracksql.jar 来启动 IronTrack SQL
7properties文件用什么打开)再启动应用程序或服务器;
8)在 IronTrack SQL 图形化的界面上看到结果并进行分析。
配置连接信息
refresh interval 设为5000为宜
经过测试,51Server一段时间的系统运行后,可以直接得到分析的结果与相应的图形分析
示例如下:
可以看到多条SQL的平均执行时间和最大的执行时间
该工具可以导出SQL的优化建议。
附录: p6spy的配置表一览
配置项名称
在字符串中查指定字符串
默认值
配置项意义及相关注意事项
module.log
ine.logging. P6LogFactory
用来拦截和记录任务应用程序的JDBC 语句。若无配置或注释掉则无此功能。
module.outage
ine.outage. P6OutageFactory
检测和记录执行时间比较长的SQL 语句。若无配置或注释掉则无此功能。
realdriver
 
真正的应用系统使用的数据库驱动程序名称。
realdriver2
 
真正的应用系统使用的第二种备用数据库驱动程序名称。
realdriver3
 
真正的应用系统使用的第三种备用数据库驱动程序名称。
deregisterdrivers
FALSE
显示地把真正的数据库的驱动程序进行反注册掉。取值true| false
executionthreshold
 
P6Log 模块执行时间设置,整数值(以毫秒为单位),只有当超过这个时间才进行记录Log
outagedetection
FALSE
P6Outage 模块是否记录较长时间运行的语句。取值true| false
outagedetectioninterval
 
P6Outage 模块执行时间设置,整数值(以秒为单位)),只有当超过这个时间才进行记录Log
filter
FALSE
是否过滤Log,取值true| false指针变量不能进行的运算
include
 
过滤Log 时所包含的表名列表,以逗号分隔。
exclude
 
过滤Log 时所排除的表名列表,以逗号分隔。
sqlexpression
 
过滤Log 时的SQL 表达式名称
autoflush
TRUE
是否自动刷新。取值true| false
dateformat
 
设置时间的格式,也就是用Java SimpleDateFormat 程序。
includecategories
 
显示指定过滤Log 时包含的分类列表,取值为errorinfobatchdebugstatementcommitrollbackresult 文字翻译成代码的各种组合。
excludecategories
 
显示指定过滤Log 时排队的分类列表,取值同上。java中spring的理解
stringmatcher
 
使用正则表达式来过滤Log,取值为inemon.GnuRegexMatcher inemon.JakartaRegexMatcher
stacktrace
表单css样式模板代码FALSE
打印堆栈跟踪信息。取值true| false
stacktraceclass
 
如果stacktrace=true,则可以指定具体的类名来进行过滤。
reloadproperties
FALSE
监测属性配置文件是否进行重新加载。取值true| false
reloadpropertiesinterval
60
属性配置文件重新加载的时间间隔,以秒为单位。
useprefix
FALSE
是否加上前缀,设置为true,会加上p6spy: 作为前缀。取值true| false
appender
ine.logging. appender.FileLogger
指定Log appender,与Log4J 有点同义,取值:ine.logging.appender.Log4jLoggerine.logging.appender.StdoutLogger ine.logging.appender.FileLogger
logfile
spy.log
指定Log 的文件名,任何适于操作系统的文件。
append
TRUE
指定是否每次是增加Log,设置为false 则每次都会先进行清空。取值true| false
log4j.appender.STDOUT
org.apache.log4j.ConsoleAppender
appender log4j 时采用的配置,配置如同Log4J 的相关配置。
log4j.appender.STDOUT.layout
org.apache.log4j.PatternLayout
同上
log4j.appender.STDOUT. layout.ConversionPattern
p6spy - %m%n
同上
log4j.logger.p6spy
INFO,STDOUT
Log 级别的设置,取值同Log4J 的配置
realdatasource
 
设置数据源DataSource 的配置名称。
realdatasourceclass
 
设置数据源DataSource 的类的全称。
realdatasourceproperties
 
设置数据源DataSource 的属性,以分号分隔。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。