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

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

应用程序池“ xxxxxxx ”的进程在closures期间超过了时间限制。 进程ID是“xxxx”。

我不知道这个问题的潜在原因是什么,所以我可以修复它?

每个Web站点(以及潜在的每个Web应用程序)都是IIS链接到一个应用程序池,该应用程序池包含主机进程的configuration。

这些属性中有几个与stream程如何被回收(终止和重新启动)相关联。 默认情况下,每个应用程序将每隔1740分钟(29小时)终止,但是如果它未被使用(也是默认情况下)20分钟,如果它不能回答“ping”(实际上,健康监测节拍) 。 其他限制可以由pipe理员进行。

当应用程序被回收时,容器进程被closures。 它有(默认)90秒正常关机或强制closures。

所以,你的问题的原因是,您的Web应用程序的回收限制之一已达到,导致IIS试图终止它。 不幸的是,应用程序无法及时closures,导致(临时)错误500。

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

所有这些都指向你的应用程序代码中的一个错误。 与该代码的供应商交谈,他们将帮助您诊断确切的问题。