应用程序端 - 每隔几秒钟随机回收一次 IIS 应用池



我需要确定应用程序池回收的原因。 (没有明显的原因)

有没有办法在 global.asax 文件中的 application_end 子内部确定这一点?

我已经在那里放了一些基本的日志记录,所以我知道它何时关闭,但我无法说出原因。

(而且它并不明显...似乎每两个请求某些操作都会导致应用程序结束。 我已经关闭了所有正常的回收原因,例如超时,内存检查等,等等。 相同的代码在不同的服务器上工作正常,所以我确定此设置有问题,但是?...)

添加

自定义日志记录无需产生开销,ASP.NET 2.0 运行状况监视即可完成这项工作。可以添加以下配置,该配置将在事件日志中记录事件,其中包含重新启动应用程序池的信息。

要打开 ASP.NET 运行状况监视,您可以编辑"主"web.config文件,通常在 %systemroot%microsoft.netframeworkv2.0.50727config 中找到。

  • 首先,在主web.config中寻找<healthMonitoring>

  • healthMonitoring节点内,找到<rules>节点

  • 在规则中,添加以下内容:

    <add name="Application Lifetime Events Default"       
         eventName="Application Lifetime Events"       
         provider="EventLogProvider"       
         profile="Default"       
         minInstances="1"       
         maxLimit="Infinite"       
         minInterval="00:01:00"       
         custom="" /> 
    

重现问题并在应用程序事件日志 fpr 中查找 ASP.NET 2.0 的来源。这应该记录回收应用程序池的原因。

尝试在事件日志中查找。 当应用程序池回收时,日志中会写入一个条目以及原因。

以下链接介绍了将在 IIS 7.5 的事件日志中看到的错误代码http://technet.microsoft.com/en-us/library/dd349270(WS.10).aspx

如果故障计算机的事件查看器中尚无日志条目,则可以修改 IIS 以记录所有应用程序池回收。

Microsoft关于如何做到这一点的文章可在下面找到

http://support.microsoft.com/kb/332088

最新更新