我们的一台生产服务器(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并观察文件夹以查看正在发生的访问。 这将显示读取/写入的文件以及访问它的任何进程。