应用程序“冻结”并请求队列已满

时间:2014-12-01 16:05:31

标签: asp.net iis-7 iis-7.5 application-pool http-error

我在IIS 7.5,Windows Server 2008 R2上运行了一个asp.net应用程序 - 使用经典模式的应用程序池,框架版本4。

有时我遇到以下问题: 该应用程序可以工作几天,但突然间我收到一个http错误503 - 服务器不可用。

当我查看应用程序池时,它似乎正在运行(我看到它已经启动),但它实际上是冻结的 - 每个请求都以503响应。 在工作进程列表中(在IIS管理器中),我看到许多请求未处理。

值得一提的是,在其他应用程序池下运行的其他asp.net应用程序运行正常,这意味着IIS工作正常,问题仅出现在此特定应用程序池中。

当我研究http错误日志时,我在Windows \ System32 \ LogFiles \ HTTPERR文件夹中看到以下错误日志:

  • 在常规设置中,当一切正常时,我注意到了记录 “Timer_ConnectionIdle”(这是我读过的正常事情)。
  • 在某些时候,我注意到“Client_Reset”记录的出现。
  • “Client_Reset”错误开始后15分钟 - >“QueueFull出现”的记录。

为了使用应用程序,我正在进行iisreset(我想池中的回收也足够了。)

我很乐意收到任何帮助或建议。

编辑:

重要的是要提及没有任何相关内容写入IIS日志或系统和应用程序日志。此错误发生在。

之前

2 个答案:

答案 0 :(得分:2)

如果没有关于您的问题的更多信息,大多数快速解决方案将是Configure Recycling Settings for an Application Pool。由于您的问题与请求队列有关,因此您可以选择选项达到大量请求后

答案 1 :(得分:1)

当我遇到HTTP 500错误时,我发现启用IIS跟踪非常有帮助。以下是描述启用跟踪然后查看跟踪的过程的链接。该站点的第一部分介绍了如何安装IIS,因此您可能希望跳到标有“启用失败请求跟踪”的部分。

Troubleshooting Failed Requests Using Tracing in IIS 7

编辑:

由于您收到QueueFull错误,您可能希望监视请求队列。最简单的方法是使用Perfmon。在具有IIS的服务器上,打开“性能监视器”并在“HTTP服务请求队列”下添加相应的计数器。在您的情况下,病态应用程序池的“当前请求队列”可能是有价值的。