“应用程序池在关闭期间超出时间限制”是什么原因?

Mon*_*ffy 9 iis

我有一个网站会随机抛出 500 个错误(通常每隔几个小时一次)。我检查了事件视图并看到以下错误:

为应用程序池“ xxxxxxx ”提供服务的进程在关闭期间超出了时间限制。进程 ID 是“xxxx”。

我想知道这个问题的潜在原因是什么,以便我可以解决它?

Ste*_*ane 13

每个网站(可能还有每个 Web 应用程序)都被 IIS 链接到一个应用程序池,该应用程序池包含托管进程的配置。

其中一些属性与进程的回收方式(终止和重新启动)有关。默认情况下,每个应用程序将每 1740 分钟(29 小时)终止一次,但如果它未使用(再次默认)20 分钟,如果它无法回答“ping”(实际上,健康监控节拍),它也可以被回收. 管理员可以设置其他限制。

当应用程序被回收时,容器进程被关闭。它有(默认)90 秒才能正常关闭,否则将被强行关闭。

因此,您的问题的原因是达到了您的 Web 应用程序的回收限制之一,导致 IIS 尝试终止它。不幸的是,应用程序未能及时关闭,导致(临时)错误 500。

现在,还有另一个方面:如果您的应用程序在 5 分钟内“失败”(即发回服务器错误)超过(默认情况下)5 次,它将被 IIS 关闭并保持关闭状态,直到您手动重新启动它。

所有这些都表明您的应用程序代码中存在错误。与该代码的供应商交谈,他们将帮助您诊断确切的问题。