为什么IIS应用程序池需要回收?

时间:2011-08-24 06:35:05

标签: iis application-pool

IIS中的应用程序池经常被回收,我无法弄清楚原因。我记得在IIS6中读到一个可能的问题,这意味着你被迫回收,但快速搜索现在变空了。在IIS6或7上,您可以关闭空闲时间,持续时间和特定时间回收选项,以便在那里没有问题。

那为什么每个.net站点都会回收应用程序池?如果某个站点没有任何内存泄漏,您是否可以设置一个永远不需要回收的站点?

同样失败的是,确保后台任务被调用的最佳方法是,IIS是否有自动重启模块,还是应该使用外部服务来进行这些调用?

听起来如果你真的想要/需要它可以做到吗?

2 个答案:

答案 0 :(得分:20)

网站旨在继续运营(尽管处于无国籍状态)。应用程序池回收对托管平台有益的原因有很多,以确保网站和服务器都以最佳状态运行。这些包括(但不限于)appdomain中剩余的动态编译程序集,会话缓存的使用(不保证清理),其他网站运行时间和资源随时间消耗等。应用程序池通常可以提供多个网站,因此应用程序池回收可以有利于确保一切顺利运行。

除了应用程序再次启动时的初始启动,效果应该是最小的。 Http.sys在启动新的工作进程时保留请求,因此不应删除任何请求。

答案 1 :(得分:1)

来自https://weblogs.asp.net/owscott/why-is-the-iis-default-app-pool-recycle-set-to-1740-minutes

  

您可能会问,是否甚至需要进行固定回收。每日回收是   万一发生轻微的内存泄漏,仅用一个创可贴即可刷新IIS   或其他任何缓慢渗透到工作程序中的东西。理论上   除非您有已知问题,否则无需每天进行回收。我用了   建议您在不需要时将其完全关闭。   但是,我今天更倾向于将其设置为每回收一次   每天在非高峰时间采取主动措施。

     

我的原因是,首先,您的网站应该能够生存   回收不会产生太大影响,因此每天回收都不应该   关心。其次,我发现即使行为良好的应用程序池也可以   最终会随着时间的流逝而影响应用程序   池。我发现流量模式导致的问题过多   缓存或应用程序中的异常内容,我已经看到了   罕见的IIS错误(确实很少见!),如果每天回收,这不是问题。是   它是创可贴吗?可能,但是如果每天的循环保持不重要   从冒泡到顶部的问题,那么我认为这是一个很好的选择   采取主动措施以节省大量故障排除工作   排除故障可能并不重要。但是,如果您认为   你有一个真正的问题,那就是通过回收再利用来抑制   一定要关闭自动回收功能,以便您可以跟踪和   解决您的问题。没有黑白答案。只有你可以   为您的环境做出最佳决定。

对于在IIS世界中相对陌生的人(例如我),还有很多有用/有趣的信息,我建议您阅读。