如何进行jvm调优以及大数据导出报表优化)

这期内容当中小编将会给大家带来有关如何进行jvm调优以及大数据导出报表优化),文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

创新互联专注于富蕴企业网站建设,成都响应式网站建设公司,商城网站建设。富蕴网站建设公司,为富蕴等地区提供建站服务。全流程按需搭建网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

前言

记录下优化一个项目的过程,接手的时候真的很卡很慢,正常来说不应该这么卡的。但是具体问题还得结合环境各个因素分析。

前端缓存

原因:开始着手优化这个工程,大致上操作了一遍,找到几个特别慢的页面,查看了下浏览器的请求情况。发现了2个接口请求的数据量特别大,在6m左右,6k条数据,在夜间没人使用也需要请求半分钟到1分钟左右,这个2个接口是货物数据,用户货物下框。并且在整个项目中会频繁使用到,使用的人数一多,导致个带宽被拖垮,其他请求的响应也变慢。

方案:在登录之后进入主页面时,就直接请求货物数据,并缓存到浏览器的sessionstorage,修改了货物下拉框,直接使用前端缓存的数据。后续优化了下,在使用下拉框时去检查缓存,没有就请求,并格式化key去缓存对应的数据。优化之后很明显,没有之前那么卡顿了,响应速度也变快了。

文件导出

原因:中间也陆陆续续优化了页面的查询和一些写法,但是都没有太大的影响。直到前阵子,一直反馈特别卡,卡到服务无响应。观察了一段时间,卡顿时,服务器器的内存没有飙高,但是cpu很高。发现出现该情况时导出excel时,就卡死,然后一直无法导出。跑本地还原了下,卡死的原因时取出的数据过大,大概在2w左右,然后需要对这个数据进行poi的格式化成excel,在这个过程中,原设计为了通用处理对数据进行了转json等处理时,内存溢出了。换成直接转换成poi,还是因为数据量过大然后内存溢出了。

方案: 当时的方案有2个:1调大tomcat的内存,2不在服务端处理。嗯,一开始时直接调内存,但是因为我的环境问题一直调不了,没办法超过1g,于是就直接进行了方案2,在前端将数据转换成excel。

方案2,在前端导出的公共处理中,获取要导出的请求数据,然后将数据转换成table的html -》在添加excel 固定的头尾标签 -》 添加a标签,将文件进行输出。 注意需要将文件通过blob处理下不然会下载失败

这里贴下处理的代码

/**
 * 转换成excel
 * @param fileName 文件名
 * @param excel excel的table html代码
 */
function exporExcel(fileName,excel){
    //excel 文件头
    var excelFile = "";
    excelFile += '';
    excelFile += '';
    excelFile += "";
    excelFile += "";
    excelFile += "";
    excelFile += "";
    excelFile += excel;
    excelFile += "";
    excelFile += "";

    //构造a标签
    var uri = 'data:application/vnd.ms-excel;base64,'
        ,fileName = fileName || 'excelexport';
    var a = document.createElement('a');
    document.body.appendChild(a);
    a.hreflang = 'zh';
    a.charset = 'utf8';
    a.type="application/vnd.ms-excel";
    //js 大对象,解决由于数据量太大导致chrome导出出现网络错误(由于url长度限制)
    var blob = new Blob([excelFile]);
    a.href = URL.createObjectURL(blob);
    a.target = '_blank';
    a.download = fileName + '.xls';
    a.tableBorder = 1;
    a.click();
    document.body.removeChild(a);
}

如果出现excel 中数字过大出现科学计算,添加下style,将格式定义为文本

`` + value + ""+``

方案1: 后面还时折腾了1天多去调tomca的内存,踩了很多坑。百度了很久,在无意间看到一条评论说,是不是我的tomcat 的版本不对,32是无法超过1g的,于是下载了一堆版本的tomcat,其中从官网下载的tomcat-7.0.65.1这个版本开始,加入了url的安全校验是无法使用| {} 等字符的。下载了64位的tomcat还是改不了,可以在conf文件夹中的tomcat-users添加用户,然后启动tomcat,他自带的工程中有manager工程,可以查看tomcat的运行的内存信息和版本信息,或是在bin目录执行cmd命令:version

如何进行jvm调优以及大数据导出报表优化)

确认你这里是64位,如果不是64位,1:确认下你的电脑系统是不是64;2 注意,确认下你装的jdk是不是64位的jdk,很重要。我的jdk不是64位,所有这里一直显示我是x86,所以导致调不了内存。还有,如果你跟我一样,电脑装了2 3 个版本的jdk,但是你的环境变量更改了,还是不行的话,那确认下你的环境变量是不是修改正确了,尝试在将path环境变量中把jdk的配置提到前面来,可以执行tomcat的shutdown命令,可以显示当前的jdk使用的时哪个,如果还是更改不了jdk,那就跟我一样修改tomcat 的配置使用指定的jdk。

在windos 环境中修改catalina.bat文件,添加

set JAVA_OPTS=-Xms800m -Xmx2048m

重启下tomcat,通过manager工程进入管理界面,可以查看下是不是修改成功了。

上述就是小编为大家分享的如何进行jvm调优以及大数据导出报表优化)了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


名称栏目:如何进行jvm调优以及大数据导出报表优化)
网页网址:http://pwwzsj.com/article/pesdig.html