ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Tomcat6在高并发下要注意关闭session (转)

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

原创 Linux操作系统 作者:280511772 时间:2009-01-02 19:42:03 0 删除 编辑
关键字: tomcat, 内存泄漏
最近偶尔发现,Tomcat6竟然在高并发下有内存泄露现象。这样看来Tomcat6确实不适合用在企业网站上。
得到这一结论的场景如下:用测试工具不停的访问一个jsp页面。jsp很简单,内容如下:
Java代码
  1. <%@ page language="java" contentType="text/html; charset=GBK"  
  2.     pageEncoding="GBK"%>   
  3. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
  4.   
  5.   
  6. "Content-Type" content="text/html; charset=GBK">   
  7. TestJSP   
  8.   
  9.   
  10. Test   
  11.   
  12.   

测试用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失效的时间。
哎 问题想明白了就这么简单,可是当时就是想不到。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13545951/viewspace-524992/,如需转载,请注明出处,否则将追究法律责任。

上一篇: c:forEach的使用
请登录后发表评论 登录
全部评论

注册时间:2008-09-19

  • 博文量
    23
  • 访问量
    21776