0
点赞
收藏
分享

微信扫一扫

Session丢失整理汇总


原因1:
似乎大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开

原因2:
Session的时间设置是不是有问题,会不会因为超时造成丢失

原因3:
IE中的cookie数量限制(每个域20个cookie)可能导致session丢失

原因4:
session丢失很正常,即使设定了过期时间,如果服务器内存不够,服务器仍然会提前释放session ,可能导致session丢失


send.Redirect之后,session的值就丢了,高版本Tomcat5.5就正常了


解决:
保存到COOKIES中,程序开始时判断是否为NULL,为NULL就重新赋值,这样应该就不会出现那样的情况了




------------------------------------------------------------
1.可以server.xml设置并发连接个数
2.session大小局限于你的可分配内存
3.关闭了浏览器,需过一段时间session才销毁
4.在web.xml可设置timeout

5.datasource放在servletContext中吧,放在session中无法想像

-------------------------------------------------------------

最近偶尔发现,Tomcat6竟然在高并发下有内存泄露现象。这样看来Tomcat6确实不适合用在企业网站上。
得到这一结论的场景如下:用测试工具不停的访问一个jsp页面。jsp很简单,内容如下:

<%@ page language="java" cnotallow="text/html; charset=GBK"
"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" cnotallow="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失效的时间。


哎 问题想明白了就这么简单,可是当时就是想不到。


参考:http://sdyouyun.iteye.com/blog/146275

http://stackoverflow.com/questions/15755851/nginx-and-tomcat-with-memcached-session-manager-config-context-cookies-false


举报

相关推荐

0 条评论