第1章 概述
1.1 性能问题说明
性能问题在此是指:由于报表设计不当或者一些程序问题,导致报表未做参数条件过滤,查询出大量数据。这就造成页面展现缓慢、导出excel文件等操作耗时较长,甚至出现卡死现象。
1.2 性能问题诊断方法
1.2.1 相关配置
在report-engine-config.properties配置文件中有如下两个配置项:
- 单次查询数据集条数上限
dataset_overflow_row_size=100000 - 创建/导出报表实例时间超过该时间,给出警告提示(单位:分钟)
elapsed_time_overflow_limit=5
第一个配置项配置标识了单次查询数据集条数的上限值,也就是说如果一次查询结果中,数据条数超过了这个配置项,报表逻辑将会直接抛出异常提示信息,避免由于错误耗费大量资源。
第二个配置项设置了一个时间上限,如果在对报表进行一些操作时,执行时间超过了这个上限值,报表日志里会给出警告提示,列出耗时较长报表信息,便于分析。
1.2.2 诊断方法
打开报表日志,具体日志配置方法详见用户手册-》第2章部署FAQ-》3.3配置日志。
根据日志里的错误信息,定位问题报表。
根据日志里的超时警告信息,定位问题报表。
根据日志里的线程信息、开始执行报表实例及报表id信息,查找相应的完成执行报表实例信息,如果未找到,即可定位问题报表。
例如日志信息如下:
2013-10-28 16:35:25,468 >> ERROR >> http-8080-3 >> [UniEAP_Report] >> com.neusoft.report.engine.core.NeuReportEngine.createReport(NeuReportEngine.java:267) >> (3512)数据集的执行成本过高,查询中止
2013-10-28 16:35:25,484 >> INFO >> http-8080-3 >> [UniEAP_Report] >> com.neusoft.report.common.event.DefaultEventHandler.handler(DefaultEventHandler.java:49) >> 用户 admin 于 2013-10-28 16:35:25 查看报表:商品销售额统计表 【rid=175d9951-1d12-4776-880f-0c884a9eff3a】 执行失败
2013-10-28 16:35:43,421 >> INFO >> http-8080-5 >> [UniEAP_Report] >> com.neusoft.report.server.util.ReportCreate.generateRealTimeReport(ReportCreate.java:294) >>开始导出报表实例【rid=341ce0c1-f72e-43e0-98a9-1d2dc3be6a00】
2013-10-28 16:35:43,421 >> INFO >> http-8080-5 >> [UniEAP_Report] >> com.neusoft.report.engine.util.PerformanceDebug.debug(PerformanceDebug.java:49) >> Performance-Export-HTML:start
2013-10-28 16:35:43,812 >> INFO >> http-8080-5 >> [UniEAP_Report] >> com.neusoft.report.engine.util.PerformanceDebug.debug(PerformanceDebug.java:51) >> Performance-Export-HTML:end: 360000
2013-10-28 16:35:43,812 >> INFO >> http-8080-5 >> [UniEAP_Report] >> com.neusoft.report.server.util.ReportCreate.generateRealTimeReport(ReportCreate.java:294) >> 完成导出报表实例【rid=341ce0c1-f72e-43e0-98a9-1d2dc3be6a00】用时:360000
2013-10-28 16:35:43,812 >> WARN >> http-8080-5 >> [UniEAP_Report] >> com.neusoft.report.server.util.ReportCreate.generateRealTimeReport(ReportCreate.java:298) >> 警告:创建/导出报表实例【rid=341ce0c1-f72e-43e0-98a9-1d2dc3be6a00】用时较长:360000
根据第一条错误记录可知存在问题报表,根据第二条记录可确定是ID为‘175d9951-1d12-4776-880f-0c884a9eff3a’的报表存在问题。
根据第七条警告记录可知ID为‘341ce0c1-f72e-43e0-98a9-1d2dc3be6a00’的报表导出时间较长,可能有性能问题。
根据第六条记录可知该报表虽然有性能问题,但正常导出了,没有异常中断。