IIS6的SESSION丢失问题,难度系数10
WINDOWS2003服务器,IIS6,
SESSION存在进程中<sessionState mode="InProc" timeout="300">。
首先程序没问题,因为程序在其他各台服务器上都正常。
故障现象:
服务器上的所有SESSION在同一秒钟全部被清除。
我写了测试程序,如下:
C# code
string a="aa";
Response.Write(DateTime.Now.ToString());
if (Session[a] == null)
{
Response.Write("Session不存在,已重建");
Session[a] = "1";
}
else
{
Response.Write("Session正常");
}
Response.End();
}
然后用ajax异步刷新页面,每秒刷一次。结果显示平均100秒左右就会输出一次 "Session不存在,已重建",
时间并不固定,有时不到1分钟,有时候比较坚挺,能达到2分左右。
用多个客户端查看,发现所有重建SESSION的时间都一致,
可以看到服务器上有什么动作在一个时间点上清除了所有SESSION,用户会话中断,必须重新登录。
而用WINDOWS“性能”工具查看站点SESSION总数时,发现每次清除SESSION的数量也并不一致,
有时达到600多个会话,但有时300多也会被全清。
服务器上没安装任何安全产品,之前因为怀疑ARP防火墙,关闭后故障依旧。
另外什么进程池设置等等等等全都检查过,也对比过其他服务器都正常。
坐等高人现身。
------解决方案--------------------
用户标识?又来推荐我的了Asp.Net使用加密cookie代替session验证用户登录状态 源码分享 欢迎拍砖
------解决方案--------------------
看楼主对问题的描述,不是新手,与其寻找session丢失的原因,不如把程序改的更加健壮一点,因为在两次请求之间 iis 重新启动应用程序并不算个意外事件