如何使用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 文件,修改下列属性;
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
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 图形化的界面上看到结果并进行分析。
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 时包含的分类列表,取值为error,info,batch,debug,statement,commit,rollback,result 文字翻译成代码的各种组合。 | |
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.Log4jLogger、ine.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小时内删除。
发表评论