是什么原因导致IIS中的应用程序池回收?

Sla*_*avo 69 asp.net iis application-pool

我一直在寻找这方面的信息无济于事.我需要这个的背景是我在这里问的另一个问题.更具体地说,在App_Data中创建/更新/删除文件会导致池回收吗?

如果有人能提供导致回收的详细清单,那就太好了.

更新:由于两个用户已经注意到我也很乐意回答指定仅回收AppDomain而不是整个池的原因.

Mit*_*ers 37

你喜欢的另一篇文章实际上做得很好.

立即回收

  • Web.config更改
  • Machine.config更改
  • Global.asax发生了变化
  • Bin目录更改
  • App_Code更改

延迟回收

可能会在其他位置发生多处更改,通常情况下,我只注意到.aspx或.cs/.vb文件的更改.添加临时文本,csv或其他文件并没有给我带来问题.

注意:这些都是应用程序域回收,而不是池的实际回收.通常,应用程序POOL将仅基于IIS中的设置(请求数,内存限制,空闲时间或计划重新启动)进行回收.


ste*_*hbu 30

两种不同的效果 - AppPool进程是潜在多个appdomains的主机.通常,这可以通过许多效果来回收,例如时间 - 每隔'n'小时,缺少请求,内存使用等.在IIS配置管理器中配置.

AppDomain - 应用程序根目录的托管实例,可以更频繁地循环,而不会影响AppPool中的其他AppDomain.Tess在AppDomain回收上的帖子非常有见地

http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

您正在写入监视重新编译的文件夹 - 这将在某个时刻触发appdomain重新创建.

事件日志将帮助您确定启动回收的原因.


Chr*_*wis 26

您可能想要打开完整的AppPool回收事件日志:

cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255 
Run Code Online (Sandbox Code Playgroud)

您还可以查看这篇Scott Guthrie博客文章:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx,它展示了如何在Global.ASAX中编写代码来记录Application.End事件的实际原因.

这对于我们诊断几个棘手的问题非常有用 - 一个特别是一个将日志文件写入wwwroot目录的应用程序 - 太多文件更改导致回收...