关于大型网站使用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不会无缘无故的丢失