成千上万的IIS请求停留在EndRequest上

时间:2018-02-12 14:32:47

标签: c# asp.net iis

我一直在尝试诊断与IIS中数千个挂起/卡住的 EndRequest 请求有关的问题。这对我们来说已经成为一个大问题,因为我们在大约一两个星期之后达到并发连接上限并且必须回收整个应用程序池以清除请求列表。

因为这是一个实时应用程序,所以我的故障排除选项有限,因此不允许任何停止或关闭应用程序池的事情。

IIS信息

  • 并发连接上限设置为最大值65535。

  • Web配置中的配置调试设置为false,我们有一个 超时设置为110秒。

  • Windows Server 2012 R2版本6.2(Build 9200)

  • IIS版本8.5.9600.16384

  • 长时间运行的请求有0个数据传输,请检查 是Wireshark。

我几乎不知道为什么这些没有超时。我已经设置了所有适当的设置 - 我可以从MSDN和其他来源找到的设置。我们非常非常难以在我们的开发环境中复制它,所以它在大多数情况下都是盲目测试。我在其他状态挂起时发现了文章等,但我找不到任何关于为什么EndRequest状态的请求不会超时的事情。

高级设置页面: https://postimg.org/image/gxec32kmt/

应用程序池请求页面: https://postimg.org/image/qupcw57o5/

Web配置: https://postimg.org/image/5xt4rh1xh/

更新1

我做了一些挖掘我们的后备,应该在一小时没用后关闭连接。我们似乎目前仍有10,153个会话仍然有效,最后一个活动时间是3天前。我已经完成了这个功能,似乎按预期工作。它遍历会话列表,任何超过一小时不活动的人都会调用WebSocketHandler.Close()方法。但是,在调用方法之后,似乎某些会话拒绝关闭。我们已经登录到位,告诉我们在运行期间是否抛出任何异常,但似乎它正在按预期运行。 这是我的错。我正在反对旧的会话数据拉动。会话数据的当前拉动显示没有会话运行超过其指定时间。这意味着调用WebSocketHandler.Close()并将它们从我们的内存列表中删除。

更新2

NETSTAT在pastebin上使用netstat -s:https://pastebin.com/embed_js/qBbZ4gJ1

更新3

更新更正1.是否可以关闭连接并失败?如果是这样,那么我们无意中孤立了对我们服务器中连接的引用。我仍然希望IIS超时能够启动,但是收集请求时必须有一些捕获。

0 个答案:

没有答案