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

时间:2011-04-03 04:11:29

标签: iis application-end

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

有没有办法在global.asax文件中的application_end子区域内确定这个?

我已经在那里放了一些基本的日志,所以我知道当它关闭时,但我不知道为什么。

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

3 个答案:

答案 0 :(得分:4)

您无需承担增加自定义日志记录的开销,ASP.NET 2.0运行状况监控可以帮助您完成工作。您可以添加以下配置,该配置将在事件日志中记录事件,并提供重新启动应用程序池的信息。

要启用ASP.NET运行状况监控,您可以编辑通常位于web.config中的“主”%systemroot%\microsoft.net\framework\v2.0.50727\config文件。

  • 首先,在主人<healthMonitoring>

  • 中查找web.config
  • 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="" /> 
    

重现问题并查看Application事件日志fpr ASP.NET 2.0的源代码。这应该记录应用程序池被回收的原因。

答案 1 :(得分:0)

尝试查看EventLog。当应用程序池回收时,会有一个条目写入日志以及原因。

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

答案 2 :(得分:0)

如果您的问题机器的事件查看器中没有日志条目,您可以修改IIS以记录所有应用程序池回收。

微软关于如何操作的文章见下文

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