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

为什么需要回收IIS应用程序池?,iis,application-pool,Iis,Application Pool,IIS中的应用程序池经常被回收,我不知道为什么。我记得在IIS6中读到一个可能的问题,这意味着你被迫回收,但现在快速搜索结果是空的。在IIS6或7上,您可以关闭空闲时间、持续时间和特定时间循环选项,这样就不会出现问题 那么为什么每个.net站点都要回收应用程序池呢?如果一个站点没有任何内存泄漏,您可以设置一个不需要回收的站点吗 如果不能做到这一点,确保调用后台任务的最佳方法是什么?是否有IIS的自动重启模块,或者是否应该使用外部服务来进行这些调用 如果你真的想/需要这样做,这听起来是可能的?网站

IIS中的应用程序池经常被回收,我不知道为什么。我记得在IIS6中读到一个可能的问题,这意味着你被迫回收,但现在快速搜索结果是空的。在IIS6或7上,您可以关闭空闲时间、持续时间和特定时间循环选项,这样就不会出现问题

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

如果不能做到这一点,确保调用后台任务的最佳方法是什么?是否有IIS的自动重启模块,或者是否应该使用外部服务来进行这些调用


如果你真的想/需要这样做,这听起来是可能的?

网站旨在保持运行(尽管是无状态的)。应用程序池回收有很多原因可以帮助托管平台确保网站和服务器以最佳状态运行。这些包括(但不限于)appdomain中剩余的动态编译程序集、会话缓存的使用(不保证清理)、其他网站的疯狂运行和资源的消耗等。一个应用程序池通常可以服务于多个网站,因此,应用程序池回收有助于确保一切顺利运行

除了当应用程序再次启动时的初始引导,影响应该是最小的。Http.sys在启动新工作进程时保留请求,因此不应丢弃任何请求

来自

你可能会问,是否需要固定回收。每天循环使用是必要的 只是一个创可贴,以帮助IIS在轻微的内存泄漏的情况下 或者其他慢慢进入工作流程的东西。理论上 除非你有已知的问题,否则你不需要每天回收。我曾经 如果你不需要它,建议你完全关掉它。 然而,我今天更倾向于将其设置为每年回收一次 作为一项积极的措施,在非高峰时间进行一天的工作

我的理由是,首先,你的网站应该能够生存一段时间 循环使用不会产生太大影响,所以每天循环使用不应该是一种浪费 涉及其次,我发现即使表现良好的应用程序池也可以 随着时间的推移,最终会有一些影响应用程序的东西潜入 水塘我看到过一些交通模式问题,这些问题会导致过度的交通堵塞 应用程序中的缓存或一些奇怪的东西,我已经看到了 罕见的IIS错误(确实很罕见!)如果每天都回收利用,这不是问题。是 它是创可贴吗?可能,但如果每天的回收保持非关键 从冒泡到顶部的问题那么我相信这是一个好问题 积极主动的措施,以节省大量的故障排除工作 这对于故障排除可能并不重要。然而,如果你认为 你有一个真正的问题,那就是通过回收,通过 无论如何,关掉自动回收系统,这样你就可以追踪和回收垃圾了 解决你的问题。没有非黑即白的答案。只有你能 为您的环境做出最佳决策


对于在IIS世界中相对未学习的人(如我),有很多有用/有趣的信息,我建议你阅读。

即使你没有内存泄漏,如果你在LOH中有任何分配,你可能最终会出现碎片。这仍然是你可以修复的,我想知道你是否可以做到,而不仅仅是出了什么问题。加上LOH的末端将是空的,不是吗?我认为您严重低估了确保没有资源泄漏所需的工作量。在大多数情况下,在说这太难之前尝试修复资源泄漏不是更好吗。您现在可以在.net 4.5中压缩LOH。我希望您的意思是“尽管没有味道”,但我怀疑你的目标是无国籍?@Damien-这就是我在手机上回复的结果;-)效果应该很小,但是进程内会话状态消失了。