趣谈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" ...
随机推荐
- 前端迭代取出 后台map返回的数据
<body> <div th:each="map : ${response}"> <span th:text="${map.key}&quo ...
- WebDriver API 实例详解(一)
一.访问某网页地址 被测试网页的网址: http://www.baidu.com Java语言版本的API实例代码: 方法1: package test; import org.testng.anno ...
- django开发项目的部署nginx
Django 部署(Nginx) 本文主要讲解 nginx + uwsgi socket 的方式来部署 Django,比 Apache mod_wsgi 要复杂一些,但这是目前主流的方法. 1. 运行 ...
- glog安装与使用
window环境下glog的安装 载后解压,利用Visual Studio打开google-glog.sln.生成解决方案 打开sln会有几个项目,libglog是动态库,生成dll,libglog_ ...
- #C++初学记录(初识汉诺塔)
汉诺塔 题目 用1,2,...,n表示n个盘子,称为1号盘,2号盘,....号数大盘子就大.经典的汉诺塔问 题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于 印度传说的 ...
- MapReduce 过程详解 (用WordCount作为例子)
本文转自 http://www.cnblogs.com/npumenglei/ .... 先创建两个文本文件, 作为我们例子的输入: File 1 内容: My name is Tony My com ...
- ng-深度学习-课程笔记-13: 目标检测(Week3)
1 目标定位( object localization ) 目标定位既要识别,又要定位,它要做的事就是用一个框框把物体目标的位置标出来. 怎么做这个问题呢,我们考虑三目标的定位问题,假定图中最多只出现 ...
- python webdriver 测试框架-数据驱动json文件驱动的方式
数据驱动json文件的方式 test_data_list.json: [ "邓肯||蒂姆", "乔丹||迈克尔", "库里||斯蒂芬", & ...
- Java中使用OpenSSL生成的RSA公私钥进行数据加解密
当前使用的是Linux系统,已经按装使用OpenSSL软件包, 一.使用OpenSSL来生成私钥和公钥 1.执行命令openssl version -a 验证机器上已经安装openssl 1 open ...
- ubuntu 18.04 64bit build tensorflow report error:C++ compilation of rule '//tensorflow/core/kernels:broadcast_to_op' failed (Exit 4)
注意:笔者未能在Ubuntu18.04 64bit下成功从源码编译cpu版本的tensorflow Ans: 1.You are likely running out of memory. Try r ...