一个JSP页面导致的tomcat内存溢出的解决方法

作者:whsnow 时间:2023-06-30 04:14:41 

今天新能测试组的同事找我看一个奇怪的现象。一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS)。但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下:


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>test</title>
</head>
<body>
<p>hello world!</p>
</body>
</html>

最初的分析是,一个JSP页面撑死了会产生一个对应的java文件,然后这个java文件编译成class文件,加载到内存里面去。也就是会有一个class对象会被加载到PermGen space里面去。跟heap space是没有任何关系的。但是最后报的是对空间溢出。于是猜测肯定是每请求一次jsp页面就会生成一个对象。

百度了一下,发现每请求一次JSP页面,会产生一个session对象。在tomcat的web.xml里面有这么个配置:


<session-config>
<session-timeout>30</session-timeout>
</session-config>

也就是说每请求一次jsp页面,会产生一个session对象,并且这个对象30分钟后才过期。我们计算了下当时的QPS是5000,也就是说每秒钟产生5000个session对象。每分钟产生300K个对象,session是个map对象,比较大,这样很快就会把内存撑爆。

解决办法如下:

1.在page指令里添加session=false。

2.把session的过期时间设成0。

现在她的loadrunner跑的很稳定。工作之后就再也没有用过jsp了,查jsp的问题还是比较费力

标签:tomcat,内存溢出
0
投稿

猜你喜欢

  • mysql中从字段中URL提取域名信息

    2009-05-25 10:35:00
  • 解析如何加快mysql编译的速度

    2024-01-15 07:26:55
  • oracle 字符串转成行

    2009-06-19 17:38:00
  • asp #include file 与 #include virtual 的区别小结第1/2页

    2011-04-02 11:17:00
  • Python+Dlib+Opencv实现人脸采集并表情判别功能的代码

    2022-02-26 00:53:49
  • python之列表推导式的用法

    2021-04-22 18:54:59
  • Python完成毫秒级抢淘宝大单功能

    2023-09-29 04:14:54
  • JavaScript中的Math.atan2()方法使用详解

    2024-05-03 15:57:13
  • tensorflow实现加载mnist数据集

    2022-02-06 06:20:24
  • Python dict和defaultdict使用实例解析

    2022-12-24 20:44:19
  • 了解javascript中let和var及const关键字的区别

    2024-05-09 15:06:06
  • Nuxt3+ElementPlus构建打包部署全过程

    2023-07-02 16:28:51
  • MySQL优化之如何查找SQL效率低的原因

    2024-01-12 21:03:55
  • SQLServer 2008 新增T-SQL 简写语法

    2024-01-28 23:49:25
  • Python修改列表值问题解决方案

    2021-08-02 12:52:39
  • 如何用word vb宏来生成sql

    2024-01-23 02:31:33
  • 十“问”DreamWeaver

    2007-02-03 11:39:00
  • 用js限制网页只在微信浏览器中打开(或者只能手机端访问)

    2023-09-24 00:11:25
  • python获得一个月有多少天的方法

    2022-02-21 00:55:15
  • python文件操作seek()偏移量,读取指正到指定位置操作

    2023-07-22 10:29:14
  • asp之家 网络编程 m.aspxhome.com