tomcat内存溢出

在部署测试报表时,没有考虑到报表缓存文件的数量,大小,导致经常出现tomcat内存溢出现象,OutOfMemoryErr:java heap space

解决方案:

Linux服务器:

在apache-tomcat/bin 目录下的catalina.sh

添加:JAVA_OPTS="-Xms1024M -Xmx1024M"

        或者 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

        或者 CATALINA_OPTS="-server -Xms512m -Xmx300m"

Windows服务器:

在catalina.bat最前面加入

set JAVA_OPTS="-Xms1024M -Xmx350m"

或者set CATALINA_OPTS="-Xmx300M -Xms512M"

附加:润乾报表     项目性能管理的推荐配置

访问量高的配置方案

以JVM内存设置为512M的服务器为例子,假设并发量为1000,用户讲求的报表为200单元格(差不多为一张A4纸的报表),不管是图片还是文本,我们以一个单元格平均为1.2K计算,可以得出报表系统的内存使用量为:

1000*200*1.2k/1024k=234.375M

根据以上计算,我们在实际生产系统中,我们建议:

cachedReportTimeout设置成60分钟,用户数据量大的情况下,减少报表缓存时间。

alwaysReloadDefine设置为no,开启缓存,这样客户在翻页时,不再与数据库交互,减轻数据库服务器的负担。同时在tag标签中把useCache设置为yes,而timeout可以根据自己的实时要求进行设置,如果数据一直都不会变的话,建议设置为-1 。

maxConcurrentForReport为1000,这是并发量

maxWaitForReport设置为2000

maxWaitTimeForReport设置为10秒钟,10秒内得不到响应,用户需要再次请求

maxCellNum,在内存中,同时计算的单元格数量建议为200单元格*50页=10000格

数据量大的配置方案

以JVM内存设置为1G的服务器为例子,假设并发量最大为5,用户请求的报表为200单元格*1000页(数据量可能上千万,但通过条件查询,最其中几千条记录),一般大数据量都没有图片,所以以每一个单元格为0.5k计算,那么在最大并发量下,得出报表系统内存使用量为:

200*1000*5*0.5/1024K=488.28125M

根据以上计算,我们在实际生产系统中,我们建议:

cachedReportTimeout设置成180分钟,用户数据量大的情况下,增大报表缓存时间。

alwaysReloadDefine设置为no,开启缓存,这样客户在翻页时,不再与数据库交互,减轻数据库服务器的负担。同时在tag标签中把useCache设置为yes,而timeout可以根据自己的实时要求进行设置,如果数据一天都不会变的话,建议设置为-1 。

maxConcurrentForReport为5,这是并发量

maxWaitForReport设置为10

maxWaitTimeForReport设置为600秒钟,10分钟内得不到响应,用户需要再次请求

maxCellNum,在内存中,同时计算的单元格数量建议为200单元格*500页=100000格

 

转载于:https://my.oschina.net/u/3544283/blog/1826082

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值