关于ASP.NET Session State Server
最近公司开发的一个网站因为访问量增大,需要添加多台Web Server来进行负载均衡。
但是在做负载均衡前需要将一些原来固定存储在单台机器上的东西分离出来,使之能单独存在在一个独立的机器上,其中就有Session State。
Session这个东西有它的优点也有缺点:
优点首先是它是存放在服务器的,不用像Cookie那样每次都要回发到浏览器,占用额外的网络带宽;况且这个Cookie的大小也是有限制的;
其次是Session里面可以存放一些复杂的.Net的对象;另外,ASP.NET的Cache,还有ASP.NET MVC里的TempData,都是基于Session的。
缺点是如果我们采用进程内(InProc,ASP.NET的默认方式)Session,那么首先它容易丢失,因为服务器上的ASP.NET工作进程会不定期或定期做回收,一旦回收,那么Session即丢失;
另外一个缺点是进程内Session既然是存放在进程内的,那么即使是多个ASP.NET工作进程也无法共享Session,更别谈多台机器了;也就是在多工作进程/多机器环境下,用户因为每次请求都是被Load Balancer通过
某种策略分配到不同的机器上(除非Load Balancer启用了某种IP Stickness特性),那么会出现某些请求在服务器端读不到Session的情况。
解决进程内Session带来的这些问题的方法有很多,但作用都是讲Session保存在进程外的其它地方。
常用的方式有将Session保存在数据库里,ASP.NET State Server里,或者使用第三方的Session存放方案,比如使用MemCache等内存存储框架。
从性能上来说,进程内的Session最高,ASP.NET State Server其次,存放在数据库里最低。这个也很好理解,因为进程内的和ASP.NET State Server的都是放在内存里。
从稳定性来说,当然是放在数据库里最稳定,这个理论上来说不存在Session丢失的可能性;最差的是进程内的Session, 工作进程一旦挂掉,Session就全丢失。ASP.Net State Server也是介于两者之间。
由此看来抛开使用第三方Seesion解决方案的情况不看,使用ASP.NET State Server是一种从性能和稳定性来说都算折中的方案。
不过在切换到ASP.NET State Server前还需要注意,如果Session里存放了非.Net原生类型的数据(也就是用户自定义类型),需要将类标识为可序列化(Serializable),因为ASP.NET会通过二进制序列化来将对象
序列化后再发送到ASP.NET State Server保存。同时,记得放开防火墙对ASP.NET State Server使用的端口的限制(默认是42424端口,可以修改);还有就是ASP.NET State Server提供了几个用于监控性能的
性能计数器,可以通过性能监视器实时查看ASP.NET State Server的运行状况。
关于ASP.NET Session State Server的更多相关文章
- Unable to make the session state request to the session state server处理
Server Error in '/' Application. Unable to make the session state request to the session state serve ...
- 在IIS上发布项目后浏览时报的错:Unable to make the session state request to the session state server
错误描述: Unable to make the session state request to the session state server. Please ensure that the A ...
- Unable to make the session state request to the session state server处理方法
Server Error in '/' Application. Unable to make the session state request to the session state serve ...
- 转: 解决【Unable to make the session state request to the session state server】
错误描述: Unable to make the session state request to the session state server. Please ensure that the A ...
- ASP.NET State Server 服务 sessionState
在发布ASP.NET网站的时候,出现state server错误:Server Error in '/' Application.----------------------------------- ...
- 在发布ASP.NET网站的时候,出现state server错误
错误信息如下: 在发布ASP.NET网站的时候,出现state server错误: Server Error in '/' Application. ------------------------- ...
- what is diff. b/w app state & session state
Application state is a data repository available to all classes in an ASP.NET application. Applicati ...
- 如何应对Session丢失》》State Server
Session丢失已经是一种习以为常的问题了,在自己也了解一些如何解决的问题,但是也一直没有机会去用,现在由于新的项目要在B/S下开发,所以不得不让我考虑Session的问题. 解决session丢失 ...
- 使用SQL Server存储ASP.NET Session变量
创建和配置ASP.NET Session状态数据库 在基于NLB(网络负载平衡)环境下的ASP.NET Web应用程序开发,我们需要将Session存储在数据库中供多个Web应用程序调用,以下为配置方 ...
随机推荐
- 游戏开发设计模式之对象池模式(unity3d 示例实现)
前篇:游戏开发设计模式之命令模式(unity3d 示例实现) 博主才学尚浅,难免会有错误,尤其是设计模式这种极富禅意且需要大量经验的东西,如果哪里书写错误或有遗漏,还请各位前辈指正. 原理:从一个固定 ...
- 适配器模式 java
结构模式:将类和对象结合在一起构成更大的结构,就像是搭积木. 1.适配器模式 源接口---适配器--目标接口 2.使用场景: 现在你有一个很古老的类,里面的一些方法很有用,你如何使用这些方法? 当然你 ...
- 折腾iPhone的生活——iPhone 5s 开启 assistive touch 后卡顿的问题
刚刚入手我的国行iPhone5s土狗灰,感觉倍棒~ 但是一上手就发现了一个问题:卡顿. 卡顿不仅体现在日常使用中,游戏中更加严重,当我玩水果忍者的时候,会发现切水果的画面都变得不流畅起来,这是拥有64 ...
- ACM1019_最大公倍数
/*问题说明 一组正整数的最小公倍数(LCM)是最小的正整数约数集合中的所有号码. 例如,5,7和15的最小公倍数是105. 输入 输入将包括多个问题的实例.输入的第一行中,将包含一个整数, 表示问题 ...
- C#添加资源的两种方式
1.粘贴到项目Properties中的Resources.resx中 base.m_bitmap = Properties.Resources.MeasuredisTool; 2.添加已有资源中的bm ...
- 364. Nested List Weight Sum II
这个题做了一个多小时,好傻逼. 显而易见计算的话必须知道当前层是第几层,因为要乘权重,想要知道是第几层又必须知道最高是几层.. 用了好久是因为想ONE PASS,尝试过遍历的时候构建STACK,通过和 ...
- oracle DG 主备切换语句整理
今日花了一下午时间进行了Oracle DataGuard的切换练习,参考了网上好多文章,最后将一些语句进行摘录,以备以后查询使用.之后有时间会带来Oracle DG的搭建和切换全过程文章. DataG ...
- 小试牛刀——python接口测试小框架
用例设计: 执行用例代码: # -*- coding: UTF-8 -*-import xlrd,logging,urllib,urllib2,json,sysfrom pylsy import py ...
- tableview: 实现tableview 的 section header 跟随tableview滑动
方法一:(只有一个headerView)一段 如果你的tableview恰好只有一个headerView,实现这种效果就好办了.把要设置的headerView设置成tableView的header而不 ...
- 如何制作iso文件
UltraISO 9.6.2.3059中文完美破解安装版 http://www.upantool.com/qidong/2011/UltraISO_v9.5.0.2800.html 软碟通v9.6.2 ...