IIS中的应用程序池经常被回收,我不知道原因。我记得在IIS6中有可能会强制回收的问题,但现在快速搜索没有结果。在IIS6或7上,您可以关闭闲置时间、持续时间和特定时间回收选项,所以没有问题。
那么为什么每个.NET网站都要回收应用程序池呢?如果一个网站没有任何内存泄漏,能否设置一个永远不需要回收的网站?
如果无法实现上述需求,如何确保后台任务被调用?是否有自动重启模块可用于IIS,或者应该使用外部服务来进行这些调用?
如果真的想/需要做到这一点,似乎是可能的?
IIS中的应用程序池经常被回收,我不知道原因。我记得在IIS6中有可能会强制回收的问题,但现在快速搜索没有结果。在IIS6或7上,您可以关闭闲置时间、持续时间和特定时间回收选项,所以没有问题。
那么为什么每个.NET网站都要回收应用程序池呢?如果一个网站没有任何内存泄漏,能否设置一个永远不需要回收的网站?
如果无法实现上述需求,如何确保后台任务被调用?是否有自动重启模块可用于IIS,或者应该使用外部服务来进行这些调用?
如果真的想/需要做到这一点,似乎是可能的?
网站旨在保持运行状态(尽管是无状态的)。应用程序池回收有许多原因可以使托管平台受益,以确保网站和服务器都以最佳状态运行。其中包括(但不限于)动态编译的程序集仍留在应用程序域中,使用会话缓存(没有清除的保证),其他网站乱跑并随着时间消耗资源等。应用程序池通常可以为多个网站提供服务,因此应用程序池回收可以确保一切正常运行。
除了应用程序重新启动时的初始启动后,效果应该是最小的。 Http.sys 在新的工作进程启动时保持请求,因此不应丢失请求。
来自https://weblogs.asp.net/owscott/why-is-the-iis-default-app-pool-recycle-set-to-1740-minutes。
你可能会问,是否需要固定的回收。每日回收只是为了在出现轻微的内存泄漏或其他慢慢渗入工作进程的情况下,刷新IIS的临时措施。理论上,除非已知问题,否则不需要每日回收。我曾建议如果不需要它,完全关闭它。然而,今天我更倾向于在非高峰时间将其设置为每天回收一次,作为一种主动措施。如果你对IIS不是很了解,我推荐你阅读更多有用和有趣的信息。