IIS 运行 连接中断了吗?

Is IIS running out of connections?

我们的 IIS 网站将其最大并发连接数设置为 4294967295。我们的 Web API 应用程序正在记录它为 Application Insights 提供的所有请求,两者似乎不匹配。在 Insights 中似乎快速获得服务的调用在 IIS 的日志中似乎无法快速完成。

什么可能导致这种情况?这是否表明 IIS 运行 连接不足,即使最大值设置得高得离谱?

换句话说(在阅读@zakima 的评论后):我应该寻找什么来识别在 IIS 中延迟的请求在它们到达应用程序本身之前或之后?

最大并发连接数默认为 4294967295,这是一个惊人的数字。但是不代表站点可以有执行4294967295个并发连接的能力。

假设同时来了4294967295个并发连接,IIS不会马上启动4294967295个线程去处理,因为这是不现实的。对于连接的处理,IIS 有“最大并发工作线程数”限制。从某些来源来看,这个数字与操作系统有关。如果IIS第一次只能启动10个工作线程来处理,那么其他4294967285个必须排队。

换句话说,4294967295 表示默认允许从 http.sys 模块到站点的最大并发连接数。然后这些请求会命中IIS的各个模块,最后命中应用程序。

如果要查看IIS的真实最大并发连接数,请参考此article使用性能监视器。

关于如何在IIS中监控请求延迟的前后,我建议你使用失败的请求跟踪。这是我的 asp.net 应用程序的失败请求跟踪日志示例。