大数据导出excel大小限制_excel导出大数据量时服务器cpu太高解决方式

最近服务器时不时的会卡死,后来经过日志分析,发如今卡死的时候有进行excel导出的操做,因而kill掉进程重启后本身手动尝试了下,发现导出的数据量超过三万条时cpu的使用率居然高达600%(服务器8核8G,tomcat原始配置的环境),而后这种情况持续个一分钟左右后tomcat就会卡死。前端

问题已经明确了就是导出的问题,后来就上网查各类解决方式,有说大数据量换成csv的,可是为了方便财务的使用,仍是坚持了导出excel,根据咱们如今的业务量,一周也就将近3万条订单数据,导出excel正常来讲应该是彻底没有问题的,因而接着找解决方式。tomcat

首先查找cpu太高的缘由,经过使用jvisualvm监控工具查看cpu的实时动态,发如今堆内存骤然上升后,发生jvm垃圾回收的时候cpu会陡然上升,稍后会稍微降低,一下子又会进行垃圾回收,致使cpu再次飙高。经过分析,基本上问题锁定在堆内存高使用量且频繁GC的缘由致使的,因而开始对导出代码进行优化,导出excel引入的是poi-3.10的jar包,由于涉及到for循环操做,以前头脑中有个印象就是变量的声明最后是放到循环外,但又不是很肯定,就上网查了下,结合http://www.iteye.com/problems/16385和http://blog.csdn.net/virtualman2000/article/details/1138496两篇博文,我我的仍是比较承认在循环外进行变量的声明的,由于在循环内声明变量,若是数据量大的话会不断的在stack中分配新的内存,仍是会有必定的影响的,因此第一步优化就是把循环内的变量提出到循环体外进行声明;服务器

第一步的优化相对来讲影响是不那么大的,接下来才是重点,对jvm进行优化,经过设置jvm参数:jvm

JAVA_OPTS="-Xms4096m -Xmx4096m -XX:PermSize=256M -XX:MaxNewSize=1024m"工具

第二步优化完以后重启tomcat再次进行测试,发现cpu最高也就到200%多,平时的cpu都15%之内,测试

第二步属于最关键的,接着又对前端导出按钮和导出条数作了相应的限制,对于咱们的业务目前限制是只能导出一周之内的数据,按钮点击后置灰不可重复点击,以及导出的最大条数限制到了45000。大数据

目前的优化就先作了这部分,后期随着业务的变化可能还会进行调整,调整后再和你们分享。优化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值