不时,我网站上的一些请求开始挂起在Session模块的RequestAcquireState状态。当螺旋开始所有请求超时,我们需要在受影响的服务器上重新启动IIS。
我调查了很多,唯一的结论是,当应用程序尝试访问存储在Session中的用户数据时,某种程度上会发生死锁。
我可以想到的唯一的办法是解决这个问题,是减少或停止在我的应用程序中使用Sessions。这是计划的一部分,但需要一段时间才能完成。
我们使用IIS 7.5运行6台计算机,在我们的负载平衡中使用proc StateServer和服务器关联。
解决方法
提供者和会话模块(IIS会话模块)都存在锁定机制。您可以开发自定义会话模块,但您仍然需要提供程序而不进行锁定,或者您可以开发定制提供程序而不需要锁定,但是您仍然需要IIS会话模块,并且在该级别上实现并不那么简单。
解决方案是UnlockedStateProvider [aka Unlocked]
按照白兔:P(检查演示项目,它解释一切。)