关于stackoverflow的第一篇文章,希望有很好的反馈:)
我目前正在尝试对我们的网站进行负载平衡。我们在带有 IIS 6 的 windows server 2003 上设置了 2 个集群 NLB。
在测试设置时,我发现有时我们的会话会丢失。一天半之后,结果如下:
- 是的,我们的 machine.config 都具有相同的加密/解密密钥。
- 是的,两台机器的 iis metabase.xml 中的 id 相同。实际上,整个文件都是一样的,除了“AdminACL”。
- 两个 Web 应用程序都设置了“StateServer”,并且都指向同一台机器。
从那时起,在谷歌上搜索提供的信息和可能的解决方案就更少了。
据我所知,没有导致此问题的特定模式。它只是偶尔发生一次。
在尝试查找问题时,我看到一个请求将 asp session id cookie 发送到服务器,但服务器没有将其映射到用户会话。
于是客户端发出了请求号x,带有cookie,session被映射,一切顺利。请求号 x+1 是从客户端发送的,带有 cookie,但未找到会话。
这两个请求都是在 NLB 中的同一台机器上发出的。
这是 asp trace.axd 的一个片段:
第一个请求:
请求详细信息会话 ID:j2ffvy45updpc52uhw1mbg55 请求类型:GET 请求时间:2008 年 11 月 26 日下午 2:58:06 状态代码:200 请求编码:Unicode (UTF-8) 响应编码:Unicode (UTF-8)
请求 Cookie 收集
名称 值 大小
ASP.NET_SessionId j2ffvy45updpc52uhw1mbg55 42 AID 22 9
响应 Cookie 集合
名称 值 大小
标头集合
名称 值
Cookie ASP.NET_SessionId=j2ffvy45updpc52uhw1mbg55; 援助=22
第二个要求:
请求详细信息会话 ID:请求类型:POST 请求时间:2008 年 11 月 26 日下午 2:58:08 状态代码:
请求编码:Unicode (UTF-8) 响应编码:
请求 Cookie 收集
名称 值 大小
响应 Cookie 集合
名称 值 大小
标头集合名称值 Cookie ASP.NET_SessionId=j2ffvy45updpc52uhw1mbg55; 援助=22
正如您在第二个请求中看到的,cookie 是从客户端发送的,但 asp 似乎从未将 cookie 添加到它的“请求 cookie 集合”中。我认为这就是它找不到会话的原因。
那么为什么cookie没有映射到会话呢?那是问题吗?问题在其他地方吗?
随时询问任何澄清。
谢谢大家的反馈。
杰夫