`
sdyouyun
  • 浏览: 119606 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Tomcat6在高并发下要注意关闭session

阅读更多
最近偶尔发现,Tomcat6竟然在高并发下有内存泄露现象。这样看来Tomcat6确实不适合用在企业网站上。
得到这一结论的场景如下:用测试工具不停的访问一个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失效的时间。
哎 问题想明白了就这么简单,可是当时就是想不到。
分享到:
评论
7 楼 nbsven 2009-06-26  
今年新发布的web server软件UFO并发数可打1000,不会出现一个字节内存泄漏的问题,其软件发布网站www.gm365.com用的就是UFO。
6 楼 yuxie 2007-12-19  
噢噢
建议产生dump文件分析一下,看问题出在哪里,给apache tomcat邮件列表里边说一下
5 楼 sdyouyun 2007-12-18  
  俺都说了就1个并发也会出问题了,你还在这里讨论100并发~
测试的页面那么简单,在tomcat5.0上测试一点问题都没有……
4 楼 yuxie 2007-12-17  
100并发是个很高的数字,除了门户,内部应用绝少能到这个程度。(想想100连接数的oracle多少钱?),这种情况还使用单机的tomcat+512内存跑已经意义不大了。另外这种情况对操作系统、网络环境等的配置要求都很高,没有良好的实验环境,做这种测试无意义亚无意义
3 楼 anyinger 2007-12-07  
关于内存泄漏现象,Tomcat一直就存在,Tomcat现在一些企业级的服务器也都在用,如果出现这样的问题的话,肯定其他服务器就不会用了,所以,估计是Tomcat的某些补丁没有下载下来。
再就是,二楼所说的“无间隔”,我觉得二楼说的也有道理。
2 楼 sdyouyun 2007-12-06  
这里的关键到不在与“100并发”,而在于访问的时候“无间隔”。
只要一个并发用户,连续无间隔的访问一个jsp页面刷上十几分钟,也足以把tomcat搞瘫痪掉。
1 楼 xj4150 2007-12-06  
100并发?普通网站足以。不过还是太少了,之前看到一篇帖子说tomcat的并发可以到300(好像是300,记不清啦)。自己没试过,不好说

相关推荐

Global site tag (gtag.js) - Google Analytics