我有一个似乎随机丢弃ASP.NET会话的Web应用程序。此应用程序与四个服务器以及负载均衡器一起托管。我已经在IIS7中查看了站点虚拟目录的会话状态设置。每个服务器都将此设置为“正在处理”。从我所做的一些阅读中,看起来这意味着会话数据仅保存在单个服务器上,如果负载均衡器在该用户上切换服务器,则会话将被删除。它是否正确?
我读过的文章还指出,如果在多台服务器上托管时使用“正在处理”,你应该使用一种名为“Sticky Sessions”的东西,但不要详细了解它。我如何检查是否正在使用“Sticky Sessions”?这是一个IIS7设置,负载均衡器独有的东西,还是完全不同的东西?
这只是我的理论,所以我也想知道在得出结论或消除负载均衡器/ IIS设置问题的可能性之前是否还有其他指标。
我已经检查了事件查看器,由于AppPools或IIS本身的任何回收,我认为这不会发生。
答案 0 :(得分:1)
是的,你是对的,当下一个请求中的另一个服务器被命中时,没有数据。
粘性会话由平衡器处理。它可以通过他们的IP粘贴客户端或发出一个棒棒糖。取决于实际的平衡器,现在它已配置。在NLB中,这被称为“会话亲和力”。
另一个常见的解决方法是将会话配置为sql server模式,但听起来你知道这种可能性并且你不想这样做。