"日志参考附件,非常感谢。 [链接]"
日志参考附件,非常感谢。
rar
这个日志是系统日志,里边太多无用日志信息,看起来不好分析,建议找下 raqsoftReport 开头的日志文件,先将里边内容清空,然后访问下报表组看看。报表组慢可以分析下报表组由几个报表组成,然后分别看下这几个报表展现速度,访问后日志里会有开始取数,取数结束,开始运算等信息,看看时间耗费在哪,确定下哪张报表慢,然后时间主要耗费在哪,这样比较好处理。另外,报表组内各个报表数据集有相同的吗?有相同的话,可以在报表组中设置个公共数据集,这样这个数据集只取一次就行,不用每个报表执行一次。还有个设置,展示报表组的 jsp 的标签里可以加个 lazyload=“yes” 标签,这个可以控制报表组展示时延时加载,不会所有报表都计算后再展示,相当于异步吧。
老师好,按照您的建议,我梳理了日志文件,看了一下时间是大部分的时间耗费在找子报表上。因为我们的报表是 api 动态生成的,报表里面会有很多子报表。大部分的输出日志信息 大体如下:DEBUG: Try to find file WEB-INF/reportFiles/xxx/xx 模板 /awewFirl.rpx详细您查看本帖内的 rar 附件。另外,因为我们使用的是报表组。报表组内的子报表使用了分页监听,我发现生成文件时分页监听内的public void afterCalc(Context arg0, ReportGroup arg1, IGroupEngine arg2) 会被重复调用。这个可以解决吗?我把可以重现问题的报表,简单处理,里面只含有一子报表。放到附件了。辛苦您看下是什么原因, 期望得到您尽快答复!zip
大部分耗费在找子表上,那就要根据代码排查下,这个时间是否合理了,比如子表已经存在了,那找应该不用多长时间,那如果子表再动态生成,那就要看时间再具体耗费在哪了。另外,报表的分页监听应该是 beforePage 和 afterPage 吧,你那个 IGroupEngine 这个是报表组的监听类,这个监听类应该是只执行一次的。报表带分页监听放到报表组里倒是可能会调用两次,一次计算分页时,另外可能写分页缓存时可能会调用到,这个需要问下开发有时间回复。
老师好,我看可能是使用子报表的上下文场景有关。因子报表所在行处于 group 分组内,然后对每个子报表所在行通过表达式设置了动态可视,当满足条件时子报表才可视。例如分组中有 10 种子报表,数据 group 迭代每次只会有一个子报表显示。实际上剩下的 9 个隐藏的子报表也会被计算。导致了大量子报表被计算了,可能这个时间是消耗在了隐藏的子报表被计算和加载上了。可以设置隐藏的行中子报表不进行计算吗?
这个日志是系统日志,里边太多无用日志信息,看起来不好分析,建议找下 raqsoftReport 开头的日志文件,先将里边内容清空,然后访问下报表组看看。
报表组慢可以分析下报表组由几个报表组成,然后分别看下这几个报表展现速度,访问后日志里会有开始取数,取数结束,开始运算等信息,看看时间耗费在哪,确定下哪张报表慢,然后时间主要耗费在哪,这样比较好处理。
另外,报表组内各个报表数据集有相同的吗?有相同的话,可以在报表组中设置个公共数据集,这样这个数据集只取一次就行,不用每个报表执行一次。
还有个设置,展示报表组的 jsp 的标签里可以加个 lazyload=“yes” 标签,这个可以控制报表组展示时延时加载,不会所有报表都计算后再展示,相当于异步吧。
老师好,按照您的建议,我梳理了日志文件,看了一下时间是大部分的时间耗费在找子报表上。因为我们的报表是 api 动态生成的,报表里面会有很多子报表。
大部分的输出日志信息 大体如下:
DEBUG: Try to find file WEB-INF/reportFiles/xxx/xx 模板 /awewFirl.rpx
详细您查看本帖内的 rar 附件。
另外,因为我们使用的是报表组。报表组内的子报表使用了分页监听,我发现生成文件时分页监听内的
public void afterCalc(Context arg0, ReportGroup arg1, IGroupEngine arg2) 会被重复调用。这个可以解决吗?
我把可以重现问题的报表,简单处理,里面只含有一子报表。放到附件了。辛苦您看下是什么原因, 期望得到您尽快答复!
zip
大部分耗费在找子表上,那就要根据代码排查下,这个时间是否合理了,比如子表已经存在了,那找应该不用多长时间,那如果子表再动态生成,那就要看时间再具体耗费在哪了。
另外,报表的分页监听应该是 beforePage 和 afterPage 吧,你那个 IGroupEngine 这个是报表组的监听类,这个监听类应该是只执行一次的。
报表带分页监听放到报表组里倒是可能会调用两次,一次计算分页时,另外可能写分页缓存时可能会调用到,这个需要问下开发有时间回复。
老师好,我看可能是使用子报表的上下文场景有关。因子报表所在行处于 group 分组内,然后对每个子报表所在行通过表达式设置了动态可视,当满足条件时子报表才可视。例如分组中有 10 种子报表,数据 group 迭代每次只会有一个子报表显示。实际上剩下的 9 个隐藏的子报表也会被计算。导致了大量子报表被计算了,可能这个时间是消耗在了隐藏的子报表被计算和加载上了。可以设置隐藏的行中子报表不进行计算吗?