有时,我网站上的一些请求开始挂在 Session 模块的 RequestAcquireState 状态上。当螺旋开始时,所有请求都会超时,我们需要在受影响的服务器上重新启动 IIS。
我进行了很多调查,得到的唯一结论是,当应用程序尝试访问存储在 Session 中的用户数据时,不知何故发生了死锁。
我能想到解决此问题的唯一选择是减少或停止在我的应用程序中使用会话。这绝对是计划的一部分,但我们还需要一段时间才能完成。
我们运行 6 台装有 IIS 7.5 的机器,在负载平衡中运行进程外 StateServer 和服务器关联性。
关于如何解决此问题或完全修复它而无需完全删除会话的任何提示?
提供程序和会话模块(IIS 会话模块)上都存在锁定机制。您可以开发自定义会话模块,但您仍然需要不带锁定的提供程序,或者您可以开发自定义提供程序而不带锁定,但您仍然需要 IIS 会话模块,并且在该级别实现并不那么简单。
解决方案是解锁状态提供者 https://github.com/efaruk/playground/tree/master/UnlockedStateProvider[又名解锁]
跟随小白兔:P(查看演示项目,它解释了一切。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)