应用程序池无故回收

我们的一台生产服务器(Windows 2003服务器)出现问题。 似乎所有的应用程序池都是每10秒钟左右(全部同时)回收。 不用说这对应用程序的性能有负面影响。

症状:
– 应用程序caching丢失
– 应用程序启动代码中的debugging语句正在触发
– 后台线程停止

其他事情我发现:
– 令人惊讶的是w3wp.exe进程保持稳定
– 没有反病毒运行在该机器上
– 尝试通过向其中一个应用程序添加<httpRuntime waitChangeNotification="1000000" /><compilation numRecompilesBeforeAppRestart="100000" />来禁用文件更改通知,但这并没有帮助
– 事件查看器中没有任何可疑内容

不知道还有什么要尝试在这里。

您需要启用IIS健康监视日志logging。 它在应用程序事件日志中logging重新启动的原因。 您不应该禁用文件更改通知,因为根本不应该在网站上有任何变化。 任何创build/修改/删除的文件/数据应驻留在网站文件夹结构之外。

这现在内置于IIS 7中的应用程序池gui中。要在IIS 6中启用此function,可以将相关信息添加到web.config中。 您特别要logging“应用程序生命周期事件”。

  <system.web> <healthMonitoring enabled="true" heartbeatInterval="1"> <rules> <add name="HeartBeat" eventName="Heartbeats" provider="EventLogProvider" profile="Default" minInstances="1" minInterval="00:01:00" maxLimit="Infinite"/> <add name="App Lifetime" eventName="Application Lifetime Events" provider="EventLogProvider" profile="Default" minInstances="1" minInterval="00:00:00" maxLimit="Infinite"/> </rules> </healthMonitoring> <system.web> 

使用健康监控事件
http://msdn.microsoft.com/en-us/library/ms228103.aspx

您是否拥有必要的权限来拒绝对bin文件夹的写入权限? 如果你这样做,那么如果有什么东西在写入文件夹,那么错误可能会出现,你可以从那里find它。

最坏的情况下,如果没有错误,那么至less你的应用程序池将不会被回收,因为bin文件夹将不会改变。

另一种方法是使用Microsoft的Process Monitor并观察文件夹以查看正在发生的访问。 这将显示读取/写入的文件以及访问它的任何进程。