日期:2014-05-17  浏览次数:20465 次

关于大型网站使用session的问题...
RT所示,

1.假设一个网站的访问量超过5W,使用session会丢失值?

2.我的项目在一个服务器,数据库在另外一个服务器,session在web.config里面配置的是使用sqlserver存储方式,然后远程连接的数据库服务器.这样他消耗的是我项目服务器,还是数据库服务器?

3.使用sqlserver这种存储方式有什么缺点?

4.如果使用cookie,如何解决安全性的问题?

5.就算耗费服务器资源,5W人的访问量大概会耗费多少?


跪求大神解答疑惑.......

------解决方案--------------------
1.假设一个网站的访问量超过5W,使用session会丢失值?

5W?不知道是什么概念,如果是5w pv/d 一般的服务器足够用,如果是5w同时在线,那session必然会丢失比较严重。

2.我的项目在一个服务器,数据库在另外一个服务器,session在web.config里面配置的是使用sqlserver存储方式,然后远程连接的数据库服务器.这样他消耗的是我项目服务器,还是数据库服务器?

web服务器肯定有一定的开销,但相对比较小,数据库那边会增加10%-15%的开销【同比全部直接用session情况】

3.使用sqlserver这种存储方式有什么缺点?
开销大了一些

4.如果使用cookie,如何解决安全性的问题?

主要是加密解密算法问题

5.就算耗费服务器资源,5W人的访问量大概会耗费多少?

和服务器的性能,并发数,响应数 和网络配置都有关联,无法具体回答你这个问题

------解决方案--------------------
asp.net的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做状态维护的,因此用HttpModule做Session是再合适不过了。

原因1:

bin目录中的文件被改写,asp.net有一种机制,为了保证dll重新编译之后,系统正常运行,它会重新启动一次网站进程,这时就会导致Session丢失,所以如果有access数据库位于bin目录,或者有其他文件被系统改写,就会导致Session丢失

原因2:

文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失

原因3:

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

原因4:

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

原因5:

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

原因6:

使用web garden模式,且使用了InProc mode作为保存session的方式


要找到你的根本原因才行,session不会无缘无故的丢失