IIS 的“SendResponse”状态下的请求卡住了很长时间;缓慢的 IIS 7.5/ASP.NET 4.0 Web 应用程序

ALA*_*ALA 7 iis asp.net iis-7.5 response-time request

我有一组非常强大、未充分利用的服务器,它们运行着几个带有 Windows Server 2008 R2 和 IIS 7.5 的虚拟机。

问题:有时请求需要很长时间来处理。用户看到他们的浏览器在旋转,显然没有从 IIS 得到任何响应。

一些统计数据和尝试解决:

  • 服务器(主机和虚拟机)上的负载可以忽略不计。CPU 永远不会超过 5%,有 10+ GB 的可用 RAM,一切都通过 MPIO 连接到快速 SAN。
  • 我每秒收到 30 到 50 个请求,混合了动态和静态内容,只有 GET 和 POST。大多数命中被缓存(80% 命中率),因此结构/SAN/IO 上的负载几乎为零。
  • 在主机和虚拟机上禁用 TCP 卸载,无论是在网络适配器上还是通过禁用 TCP 烟囱
  • Web 应用程序在 ASP.NET 4.0 集成模式下运行。他们不会对第三方 Web 服务等进行长时间的调用。
  • 我已经尝试过 processModel autoConfig,以及将 maxWorkerThreads、maxConnections、maxIOThreads 等设置为非常高的数字,没有任何区别。
  • 数据库查询都在不到 1 秒的时间内完成。我分析了一整天,并没有捕获一个需要更长时间的查询。
  • 我看过大量的性能监视器计数器;ASP.NET 队列和应用程序队列总是空的,似乎没有任何东西排队(考虑到服务器根本没有出汗,这没有任何意义)
  • 我已经确定使用 appcmd 列表请求有时请求在 IIS 的“SendResponse”阶段“卡住”20-60 秒。到目前为止,这是我能找到的唯一可以解释为什么我们看到用户在导航时卡住的原因。请注意,尽管大多数请求都得到了快速处理,但看起来就像来自不同应用程序池的随机请求卡在这里一样。

知道我还能看什么吗?什么会导致请求卡在 IIS 的“SendResponse”阶段?

Ben*_*ada 2

您找到解决方案了吗?我经常看到同样的事情很长一段时间,其中 JS、PNG 和 GIF 等静态内容卡在“IIS Web Core”模块中的“SendResponse”状态。我在 IIS 7/ASP.NET 4.0 中也遇到同样的情况。我正在使用Microsoft.Web.Administration code而不是 appcmd 来监视这些内容。

更新:在一些进一步的研究中,我提出的一种可能性是它可能是网络连接断开。在此线程中,该人在他的 IIS 日志中报告了 Win32 状态代码 1236,即“网络连接被本地系统中止”。但我不确定这是否意味着请求者取消了请求,或者网络服务器已中止请求。可以想象,请求者可能会在所有这些页面内容(图像、JS 等)的 HTTP 请求完成之前导航到站点上的另一个页面,这可能会中止对 Web 服务器的所有待处理请求(即,他单击页面上的链接)当它第一次渲染时)。我在 IIS 日志中发现了一些 1236 Win32 状态代码(主要针对静态内容,例如 GIF、PNG 和 JS,其中一些与 ASPX 页面绑定),但是,我不确定这些是否与我的请求相同我看到卡在“SendResponse”状态。