2007-12-05
Tomcat6在高并发下要注意关闭session
关键字: tomcat, 内存泄漏
最近偶尔发现,Tomcat6竟然在高并发下有内存泄露现象。这样看来Tomcat6确实不适合用在企业网站上。
得到这一结论的场景如下:用测试工具不停的访问一个jsp页面。jsp很简单,内容如下:
测试用100并发用户(绝对并发)、跑上十分钟Tomcat就Over了。加大Tomcat使用的虚拟机内存到512M,测试也撑不过半个小时。
在压力不是很大的情况下(100在线用户,每隔3秒访问一次jsp页面),倒是不会出现问题。
测试时用的jdk版本为sun的1.5.0_12。Tomcat6.0.14、6.0.13都存在此问题。而版本较低的5.0反而没有此问题。5.5版本据同事说也有同样的问题存在。
--------------------------------------------------------
华丽的分割线
--------------------------------------------------------
今天发现outofmemeory的原因了。
并不是tomcat的bug,问题出在session上。不停的访问一个jsp页面后,此jsp页面产生了大量的session存放在内存里,从而导致outofmemory。
在jsp页面中加上<%@ page session="false" %>就好了,或者测试时模拟用户访问时都模拟为一个浏览器进程,这样tomcat就不会重复的创建session了。
当然也可以限制session失效的时间。
哎 问题想明白了就这么简单,可是当时就是想不到。
得到这一结论的场景如下:用测试工具不停的访问一个jsp页面。jsp很简单,内容如下:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!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=GBK">
<title>TestJSP</title>
</head>
<body>
Test
</body>
</html>
测试用100并发用户(绝对并发)、跑上十分钟Tomcat就Over了。加大Tomcat使用的虚拟机内存到512M,测试也撑不过半个小时。
在压力不是很大的情况下(100在线用户,每隔3秒访问一次jsp页面),倒是不会出现问题。
测试时用的jdk版本为sun的1.5.0_12。Tomcat6.0.14、6.0.13都存在此问题。而版本较低的5.0反而没有此问题。5.5版本据同事说也有同样的问题存在。
--------------------------------------------------------
华丽的分割线
--------------------------------------------------------
今天发现outofmemeory的原因了。
并不是tomcat的bug,问题出在session上。不停的访问一个jsp页面后,此jsp页面产生了大量的session存放在内存里,从而导致outofmemory。
在jsp页面中加上<%@ page session="false" %>就好了,或者测试时模拟用户访问时都模拟为一个浏览器进程,这样tomcat就不会重复的创建session了。
当然也可以限制session失效的时间。
哎 问题想明白了就这么简单,可是当时就是想不到。
- 18:47
- 浏览 (610)
- 评论 (6)
- 分类: 综合技术
- 发布在 济南JavaEyer群 圈子
- 相关推荐
评论
yuxie
2007-12-19
建议产生dump文件分析一下,看问题出在哪里,给apache tomcat邮件列表里边说一下
sdyouyun
2007-12-18
测试的页面那么简单,在tomcat5.0上测试一点问题都没有……
yuxie
2007-12-17
100并发是个很高的数字,除了门户,内部应用绝少能到这个程度。(想想100连接数的oracle多少钱?),这种情况还使用单机的tomcat+512内存跑已经意义不大了。另外这种情况对操作系统、网络环境等的配置要求都很高,没有良好的实验环境,做这种测试无意义亚无意义
anyinger
2007-12-07
关于内存泄漏现象,Tomcat一直就存在,Tomcat现在一些企业级的服务器也都在用,如果出现这样的问题的话,肯定其他服务器就不会用了,所以,估计是Tomcat的某些补丁没有下载下来。
再就是,二楼所说的“无间隔”,我觉得二楼说的也有道理。
再就是,二楼所说的“无间隔”,我觉得二楼说的也有道理。
sdyouyun
2007-12-06
这里的关键到不在与“100并发”,而在于访问的时候“无间隔”。
只要一个并发用户,连续无间隔的访问一个jsp页面刷上十几分钟,也足以把tomcat搞瘫痪掉。
只要一个并发用户,连续无间隔的访问一个jsp页面刷上十几分钟,也足以把tomcat搞瘫痪掉。
xj4150
2007-12-06
100并发?普通网站足以。不过还是太少了,之前看到一篇帖子说tomcat的并发可以到300(好像是300,记不清啦)。自己没试过,不好说
发表评论
- 浏览: 3918 次
- 性别:

- 来自: 济南

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
STAF--一个很好的软件产品 ...
http://www.ibm.com/developerworks/cn/jav ...
-- by sdyouyun -
STAF--一个很好的软件产品 ...
ant有telnet任务,可以telnet到远程主机上执行某个命令,比较适合远程 ...
-- by yuxie -
STAF--一个很好的软件产品 ...
ant可以做远程机器上的操作吗?ant俺只会最基本的东西,如果也可以,那是更好了 ...
-- by sdyouyun -
STAF--一个很好的软件产品 ...
微软的测试框架很成熟,也很复杂。他们有一套专门的测试实验室。可以用web界面控制 ...
-- by sdyouyun -
STAF--一个很好的软件产品 ...
貌似大部分功能ant也可以做到。。
-- by yuxie






评论排行榜