我在Windows Server 2016和ASP.Net 4.5.2和MVC 5.2.7上的IIS 10.0遇到了尴尬的问题。
[有时,某些请求不会收到响应,并且会运行几分钟(可能是10分钟左右),然后结束丢失的连接(Windows上的Firefox中为PR_CONNECT_RESET_ERROR,iOS上的Firefox中为NSURLDomainError)。这些主要是POST请求。发生此问题时,其他GET请求将收到快速响应和正确的结果。通常,POST请求的处理时间不会很长,通常少于3秒。
回收相关的工作程序将使问题消失数小时或数天。
[当今天检查问题时,我们检查了Web服务器时,我发现CPU使用率很少,不到10%,内存为56%,工作进程只有615 MB。我既没有在这些请求的W3C日志中登录,也没有在我的自定义应用程序日志中登录。
[我添加了Web-Request-Monitor一致性How do I see currently executing web request on IIS 8,但这样做时,由于当前未发生此问题,工作进程可能被回收了。
[Internet和我的Web服务器之间有一个反向代理和一个访问管理器。我想他们可以解决这个问题,但是它肯定与IIS有关,因为回收可以帮助您。
所有这些都是在运行我的应用程序的较新版本的接受Web服务器上发生的。我不知道可能会涉及到应用程序体系结构的任何重大更改。另外,如果没有其他客户端,则来自其他客户端的流量将很少。
进一步调查此问题的下一步可能是什么?
IIS回收修复此问题并不意味着这是IIS问题,因为所有asp.net应用程序都在.net运行时中运行,除非证明请求已在IIS模块中挂起。
因此,您可能需要等待此问题再次发生,然后为花费的时间创建失败的请求跟踪规则。然后它将告诉我们此问题正在IIS管道模块或.net运行时上发生。
如果所有请求都在.net运行时中挂起。然后,您可能必须捕获一个挂起转储,并通过WINDGB和mex扩展进行深入分析。它会告诉我们那里发生了什么。