皕杰报表之性能管理

helloworld_34035044
• 阅读 642

1 报表缓存 当某个客户端访问某个报表,引擎将其计算出来后,会将运算结果缓存下来,之后如果再有别的客户端用相同的参数访问同一个报表,引擎会将缓存下来的报表结果直接返回给该客户端,而不会重新计算报表。

这种缓存方式在大用户并发的情况下可以大大的提高性能,缓解服务器的计算压力。同时,当同一个客户端访问完该报表后,如果需要对同一报表结果进行别的操作,例如打印、导出、翻页等,引擎也直接从缓存里取报表结果,而不必重新计算。

缓存报表的存储有两种方式:一、直接存到硬盘上 二、同时存到内存和硬盘,在内存中处于软引用状态。当内存够用时一直在内存中保持着,引擎需要的时候直接从内存中取,交互速度快,当内存不够时缓存被当成垃圾回收,引擎需要的时候从硬盘上读取。

皕杰报表还支持缓存组,即根据缓存的缓存时间不同,将报表分组缓存。

缓存组的设置方法:点击报表根格,选中报表,在右侧属性的缓存组属性中设置缓存组名称,该名称要与配置文件中节点的name属性保持一致,同时在该标签中可以对缓存中的最大对象数及缓存时间进行设置。可同时设置多个缓存组,即可以有多个节点,但节点的name属性值不能重复。

如果报表没有设置缓存组,则执行默认缓存时间。

2 并发控制 当报表引擎已经没有优化余地时,如果服务器资源依旧吃紧,可以控制应用服务器的并发数。不同的应用服务器,其并发数的控制机理会略有区别,具体的配置方法请参见服务器厂商提供的文档。

3 JVM内存 JVM堆栈内存是决定应用服务器性能的关键指标,由于JAVA的自动垃圾回收机制以及其屏蔽了指针的应用,导致了JAVA程序占用的内存总是比C语言程序占用的内存大,因此JAVA程序最常见的性能问题就是内存溢出, 当内存不够时,可以加大JVM堆栈内存,最大可以加到2G(32位的JVM)

4 按需取数 当报表数据量很大,结果报表格子数也很多的时候,如果报表的运算并不复杂,没有跨行组的运算,可以采用按页取数的办法,该办法可以从根本上缓解大报表的内存压力。

该办法的原理是:每次只取出一页数据进行报表运算,当翻页时取下一页数据进行运算,这样每次内存中只保留一页的数据,大大加快了运算速度,减轻了内存压力。

用户根据数据量的大小可以创建不同的报表类型,当数据量较少,可直接用“普通报表”,若数据量过大,有可能影响运行速度的话,可使用“行式报表”。

5 流式导出 “行式报表”解决了报表在浏览器上展示时的性能问题,但是当“行式报表”导出excel时,依然会遇到性能问题,可以采用把导出格式配置诚xlsx格式的方式来解决这个问题。

该方式的原理是:无论报表是否是“行式报表”,xls格式导出都是采用Java对象方式来操作Excel文件。而导出为xlsx格式则是根据报表类型不同而采用不同的技术手段,当报表为“行式报表”时,采用数据流的方式来操作Excel文件,否则采用Java对象的方式。

采用Java对象方式操作Excel文件,快,但是耗用内存多;采用数据流方式操作Excel文件,慢,但是耗用内存少。

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
皕杰报表小结
1.在使用皕杰报表时,我们会发现皕杰报表总共有下列五个视图区我们可以关闭或打开每个视图区,方便我们的报表设计。有的时候我们关闭了某个视图的话,我们可以通过点击左上角的视图菜单来重新打开我们所需要用的视图区域。这时候我们点击每个视图的左上角就会发现有分离按钮
皕杰报表中参数和变量的区别
在皕杰报表中,参数是有数据类型的变量,在报表运算过程中作为变量使用。参数那么参数在皕杰报表中具体如何使用呢?1、作为sql语句的where条件:通过给参数赋值可以实现动态查询,给参数赋予不同的值,从而查询出来不同的数据结果。需
皕杰报表中未使用的数据集和多数据集会影响运算不
首先想知道多数据集和未使用的数据集影响运算不,我们需要先了解设计器是怎么运算的,皕杰报表的brt文件在服务端是由servlet解析的,其报表生成的运算顺序是:变量参数运算数据集取数及运算报表运算及扩展......,前面的步骤未走完,是不会往下进行运算的。无论报表里是否用到了这个数据集,报表工具都要先完成数据集的取数和运算再进行报表运算,因而,如果数据集发
混世魔王 混世魔王
1年前
皕杰报表的缓存问题
设置缓存是提高报表性能的手段之一,皕杰报表在配置文件reportconfig.xml中对缓存进行设置。在系统模式中通过设置开发模式或生产模式来确定是否启用报表缓存。develop在缓存设置中设置缓存方式。1、使用皕杰内置的缓存(即:设置eh"false")
Stella981 Stella981
3年前
Redis学习笔记(五) 总结
为什么使用redis    改善性能。当大SQL执行耗时久,且结果不频繁变动,就特别适合将运行结果放入缓存,后面的请求从缓存中读取,使得请求能够迅速响应    缓解并发压力。大并发下,所有请求都是直接访问数据库的,会出现连接异常。redis做一个缓冲,让请求先访问redis,而不是数据库。
Wesley13 Wesley13
3年前
mysql基础之查询缓存、存储引擎
一、查询缓存    “查询缓存”,就是将查询的结果缓存下载,如果查询语句完全相同,则直接返回缓存中的结果。  如果应用程序在某个场景中,需要经常执行大量的相同的查询,而且查询出的数据不会经常被更新,那么,使用查询缓存会有一定的性能提升。查看当前服务是否开启了查询缓存功能:!复制代码(https://oscimg.oschina.n
混世魔王 混世魔王
1年前
皕杰报表的分页方法
如果一张报表有很多行,在打印的时候因为收到纸张的限制,所以需要对这张表进行分页。皕杰报表里分页的方式有很多,还能够自定义分页,可以最大程度满足各种页面的需求。单击报表的空白处,则与报表纸张、分页、打印相关的设置显示在属性视图中,如下图所示:基本的分页方式分
皕杰报表之报表优化
在做报表时,数据量少的情况下,不明显,但数据量过大的情况下,可能就会出现预览数据缓慢等情况,这时我们可以设计报表时,进行一些优化。1.优化报表运算时间,皕杰报表的brt文件在服务端是由servlet解析的,其报表生成的运算顺序是:变量参数运算数据集取数及运
混世魔王 混世魔王
1年前
皕杰报表工具之报表日志和tomcat日志
我们在调试皕杰报表的过程中,通过浏览器访问有时会出现错误,比如查不出数据,500错误等,不知是哪里出了问题?这时候我们需要查看报表日志,看看报表运行是否有错误信息。皕杰报表日志的位置位于wabapps/iface/logs下,iface是项目的主目录,当报