今天新能测试组的同事找我看一个奇怪的现象。一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS)。但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下:
最初的分析是,一个JSP页面撑死了会产生一个对应的java文件,然后这个java文件编译成class文件,加载到内存里面去。也就是会有一个class对象会被加载到PermGen space里面去。跟heap space是没有任何关系的。但是最后报的是对空间溢出。于是猜测肯定是每请求一次jsp页面就会生成一个对象。
百度了一下,发现每请求一次JSP页面,会产生一个session对象。在tomcat的web.xml里面有这么个配置:
也就是说每请求一次jsp页面,会产生一个session对象,并且这个对象30分钟后才过期。我们计算了下当时的QPS是5000,也就是说每秒钟产生5000个session对象。每分钟产生300K个对象,session是个map对象,比较大,这样很快就会把内存撑爆。
解决办法如下:
1.在page指令里添加session=false。
2.把session的过期时间设成0。
现在她的loadrunner跑的很稳定。工作之后就再也没有用过jsp了,查jsp的问题还是比较费力
第一课趣味二进制——修改植物大战僵尸数据 任务介绍 学习目标 知识需求 需求工...
文章目录 前言 本周最重要的五件事情 本周搞砸的四件事情 本周的四个启发 前言 ...
2 月 18 日消息 据外媒 Windowslatest 报道,在预览版本中发现的参考资料表明,...
1.ajax跨域传递值是所需要的回传的类型为jsonp $.ajax({url: "http://.......",t...
一.前言 .NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区...
昨天刚学了html的一些内容,就迫不及待的想做个京东上面的搜索条,结果做是做出...
IT之家2月18日消息外媒 Windows Latest 报道,微软正在与谷歌合作进行一项新的改...
首先插件配备好了,写一个HTML测试一下 首先创建一个文件夹,创建一个HTML 文件...
JSP spring boot / cloud 使用filter防止XSS 一.前言 XSS(跨站脚本攻击) 跨站脚...
在项目开始之前我们可以先去了解一下IConfiguration接口,.Net Core Web应用程序...