2011-04-03 108 views
4

我需要确定为什么应用程序池正在回收。 (其原因不明)IIS应用程序池每隔几秒随机回收

有没有什么办法可以在global.asax文件的application_end子文件中确定这个内部?

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

+0

也许我应该澄清......我相信应用程序池正在回收的原因如下:1)应用程序散列中的数据将消失。换句话说,如果我写入应用程序(“foobar”)=“bloz”,那么在下一个http post后,应用程序(“foobar”)是空的。 2)我将调用记录到Application_End。不过,我想我不知道这是否意味着应用程序池正在回收或什么。 – 2011-04-03 19:29:22

回答

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="" /> 
    

再现e问题并查看ASP.NET 2.0源代码的应用程序事件日志。这应该记录为什么应用程序池被回收。

+0

看起来上面有些指示丢失了?无论如何看到我上面的评论。奇怪的是,当我手动回收apppool的时候,我看到了一些事件,但没有其他的事情。 – 2011-04-03 19:28:24

+0

谢谢。这工作。问题是我的一个愚蠢的错误。意外的是在AppCode目录中正在创建文件,导致应用程序重新编译。你的回答有帮助。谢谢 – 2011-04-03 21:47:15

0

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

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

+0

不...我已经遵循了所有说明,并打开了关于iis回收的所有复选框。除了手动回收时,我没有看到任何事件。 – 2011-04-03 19:27:21

0

如果不是已经在你的困扰计算机的事件查看器日志条目,你可以修改IIS记录所有的应用程序池回收。从微软如何做到这一点

文章中找到下面

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

+0

已经做了这个,并且没有事件!我确实看到了手动回收应用程序池时的事件,但没有任何其他回收事件。 – 2011-04-03 19:25:09