趣谈StateServer在Web Garden,Web Farm下的使用
上一篇翻译的博客【译文】漫谈ASP.NET中的Session已经介绍了Session的基础知识,如果看过了的话对Session应该有了一个比较清晰的认识了,现在我来谈谈我所遇到的困境以及对Session的一些看法。
我们是一家以查询服务为主的网站,然后Leader说,要给查询增加验证码╮( ̄﹏ ̄)╭ ,一开始,我骚包地使用了加减法的验证码(因为已经成为历史,找不到截图了),然后过了两天,客服MM就开始给我们反馈问题了,说接到了大量的客户投诉!嗯,是这样的
很疑惑啊(= ̄ω ̄=) ,不应该出现问题才对,因为我是用StateServer做了Session的集中式管理,也设置了相同的MachineKey了,按照各种教程来说都应该无缝对接才对啊,嗯~是不是因为我们的验证码的确太难了?20以内的加减法诶~好吧,我改!字母数字组合!这下简单了吧~过了两天,客服MM又来找了,客户说验证码还是输入不对啊!!!!!
这下奇怪了,我自己去试吧~经过多次尝试!
这是真的!︽⊙_⊙︽咋办咧?记日志吧~日志上线1分钟,就有N多输错的内容过来了,我看了一下,有的挺匪夷所思的~嘿嘿~怎么有个奇奇怪怪的东西混进来了?
不过后来分析日志发现,很多识别出现问题,比如1和l,0和o,好吧,该把这些字符去掉~我大哥和我说,为了方便调试,把字母都去了吧~我深表同意!然后我们离真相只有一步之遥了~一看日志,真的有一些相差很大的输入~我基本确定了是Session跨域引发的问题。因为我们是用一个负载均衡设备做的Web Farm,我觉的理论上出现跨服务器的概率不大,因为本地是有DNS缓存的,缓存时间是20多分钟吧,我记得,但是既然出现了这个问题,就说明本地DNS缓存对负载均衡设备是比较无力的,之后进行诊断,只能祭出我大大神器~页面级调试~什么?你没听过?
对,就是在前端页面加一个这个东西,就能做到了
用了这玩意儿,什么Cookie,Session ID,Session Value统统跑不出你的把控,然后本地修改HOST,让他在我所控制下在两台服务器之间进行跳转。最后我100%地确定了!两台服务器的Session没有共享!
怎么样~SB了吧~照着各种资料设置,最后还是失败了!然后就开始了无穷无尽的找资料,然后就翻译出了那篇博客~但是还是没有解决我的问题。昨天下午,终于招到了线索!k325056讲到了这个问题!!
我必须总结后告诉你!两个站点的虚拟路径是要保证一致的!!!!而且是大小写敏感的对,在我的调试大神器里有这个东西!我为什么要放出两条来呢?因为我必须难过地告诉你:我到现在也不知道怎么改这个虚拟地址!!!!!!!!!!◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣
但是聪明如我,还是发现了INSTANCE_ID和虚拟地址之间的关系了~嘿嘿~ID控制着虚拟地址的最后一位,而我们两台服务器上的网站ID是不同的~地址也就不同了~然后修改以下网站ID(这里有一个天坑!修改了以后我们的网站立马全部崩溃!特么的因为修改了ID以后IIS就把你的站点停止了~~~停止了.....停止了.......你需要手动开启你的站点)然后现在再用调试神器去观察,嘿嘿,生活是美好的~Session是统一的!
总结时间
1、StateServer很好用,很方便,采用集中式管理,支持数据压缩,在web.config里配置就好了,大神的这 篇博客里有 别怕英文,看图就好了~但是!请记住!这玩意儿对应用之间是有数据隔离的!要在web Farm里使用他的话,必须要保证两个站点在两台服务器上的虚拟目录要一致,大小写敏感!
2、根据上一条显示,如果是多个应用Session数据共享就会出现问题!所以我感觉,Sate Server模式更适合Web Garden环境使用!多个应用,有不同的Web Site ID的话要使用State Server共享数据是非常困难的!有资料显示可以通过反射来修改他的应用验证机制来实现这个目的。
趣谈StateServer在Web Garden,Web Farm下的使用的更多相关文章
- nginx+iis、NLB、Web Farm、Web Garden、ARR
nginx+iis实现负载均衡 在win2008R2上使用(NLB)网络负载均衡 NLB网路负载均衡管理器详解 [译文]Web Farm和Web Garden的区别? IIS负载均衡-Applicat ...
- Web Farm 和Web Garden
这两个都是提高网站性能的服务器端技术 1.Web Farm:如果应用程序被多个服务器托管,这种情况就可以称作Web Farm. 2.Web Garden: 指的是一个应用程序可以分成多个进程(w3wp ...
- Web Farm和Web Garden的区别
在这篇博文中,我将确切剖析Web Farm和Web Garden的区别和原理,以及使用它们的利弊.进一步地,我将介绍如何在各个版本的IIS中创建Web Garden. 英文原文 | Abhijit J ...
- What is the difference between Web Farm and Web Garden?
https://www.codeproject.com/Articles/114910/What-is-the-difference-between-Web-Farm-and-Web-Ga Clien ...
- 【转】浅谈常用的几种web攻击方式
浅谈常用的几种web攻击方式 一.Dos攻击(Denial of Service attack) 是一种针对服务器的能够让服务器呈现静止状态的攻击方式.有时候也加服务停止攻击或拒绝服务攻击.其原理就是 ...
- [转]ASP.NET应用程序生命周期趣谈(三) HttpModule
在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpM ...
- web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
- [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说
Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...
- 【WEB】web www http html hypermedia hypertext 技术名词的意思
www WWW是环球信息网的缩写,(亦作"Web"."WWW"."'W3'",英文全称为"World Wide Web" ...
随机推荐
- [py]python中的==和is的区别
is比较id id(a) == id(b) == id(c) a is d #false ==比较值 a==b #true 举个例子:a = 1 b = a c = 1 d = 1.0 这里有3个对象 ...
- 用Python实现的数据结构与算法:队列
一.概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行. 二.ADT 队列ADT(抽象数据类型)一般提供以下接口: Qu ...
- 单机部署PXC
在一台机器上安装PXC Linux:centos 7 IP:192.168.30.221 PXC版本:Percona-XtraDB-Cluster-5.7.17-rel13-29.20.3.L ...
- java-Unsupported major.minor version 52.0错误解决
java-Unsupported major.minor version 52.0错误解决 eclipse版本设置不对, 低版本不能兼容高版本 eclipse中: windows -> pref ...
- IBM WebSphere MQ for net 报错 MQRC_NOT_AUTHORIZED
最近进入新公司要维护以前的90年代的老系统 用NET对IBMMQ做测试 NET 4.0 +7.5 MQ 版本 待我写好NET调用的代码后出现错误MQRC_NOT_AUTHORIZED 折腾大半天往上找 ...
- Excel error 64-bit version of SSIS
问题是 在windows server 2008 64位的计划任务执行 ssis 的错误 ,ssis你们带有读取excel 日期 2015/3/17 11:50:34日志 作业历史记录 (SSIS_U ...
- in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
最近在用ruby的一些库的时候,总是出现这个错误. 在使用net/imap库的时候,或者net/http库(主要是用到了https,https是用了ssl) 的时候,具体如下: 错误提示:E:/Rub ...
- org.apache.ibatis.exceptions.TooManyResultsException的异常排查过程
在查阅测试环境业务日志中的ERROR级别的日志时,发现了有一个Mybatis相关的异常错误org.apache.ibatis.exceptions.TooManyResultsException: E ...
- python安装mysql-python1.2.5
首先安装好python 然后安装C++ Microsoft Visual C++ Compiler for Python 2.7 下载后双击安装 登录https://pypi.python.org/p ...
- FFmpeg 入门(6):音频同步
本文转自:FFmpeg 入门(6):音频同步 | www.samirchen.com 音频同步 上一节我们做了将视频同步到音频时钟,这一节我们反过来,将音频同步到视频.首先,我们要实现一个视频时钟来跟 ...