大报表导出 excel 并发控制方法

 

问题说明


大报表在导出 excel 前需要将所有的数据读取到内存并写入 excel 文件,这个过程是比较消耗内存的,所以高并发下可能会影响导出的效果。

那么我们可以控制下导出的并发数,从而提升导出的性能。

并发控制配置方法


注意:此方案需要使用 2021 年 4 月 1 号之后的核心 jar
核心配置:
修改 WEB-INF\raqsoftconfig.xml,添加下配置:

<property name="bigReportExcelExportLimit" value="20" />

value 值代表允许同时导出得次数,取值范围为:1-32767
范围外的数字或者不配置表示无限制

value 值受机器配置和内存大小的限制,需要根据实际情况配置。
一般建议配置的稍微小一些,因为如果导出线程太多的话,cpu 太繁忙导出时间能多出几十倍,比如 1 人导出 2 分钟,20 人可能导出要 20 分钟,但是改成限制成 10 人,这 10 人比较快 3 分钟完成了,接下来得用户也都能 3 分钟完成(10 人中一人完成了就可以进下一个了)

并发超出限制前台效果


当导出超过并发数时,前台会弹出提示框告知用户,让用户稍后操作:

imagepng

测试过程和结果说明见附件:
大报表并发导出不完全测试.docx