IISreset和应用程序池回收在影响缓存方面有啥区别

Posted

技术标签:

【中文标题】IISreset和应用程序池回收在影响缓存方面有啥区别【英文标题】:What is the difference between IIS reset and application pool recyle in affecting of cacheIISreset和应用程序池回收在影响缓存方面有什么区别 【发布时间】:2012-01-04 10:41:09 【问题描述】:

我遇到了一个奇怪的问题:据我所知,可以通过回收应用程序池来清除缓存。

但是,在最近的一个项目中,缓存并没有以这种方式清除。相反,我们不得不重置 IIS 以清除缓存。

这些操作之间有什么区别,我所经历的区别可能是什么原因?

【问题讨论】:

我发现这个回复很有用:serverfault.com/a/474940/257995。与此处的其他答案类似,但它还包括刷新选项。 【参考方案1】:

当您回收 AppPool 时,会有一些重叠时间。您的不健康工作进程被标记为回收,但继续处理它已经收到的请求。 (它不会处理新请求)。处理完所有现有请求后,不健康的工作人员将被终止。

重置 IIS 后,所有工作人员都将终止,内存中的缓存将被清除。一旦有新的请求进来,就会创建新的工作人员。

所以我认为对于 AppPool 回收和 IIS 重置都会清除缓存。据我所知,该缓存存储在应用程序域中。一旦不健康的工作进程终止,所有缓存项都应该被销毁。

【讨论】:

Dose 意思是如果我们等待足够长的时间并在稍后的时间点击页面,缓存就会消失并通过回收应用程序池来清除? 不工作,我回收一个池并检查新池,并且有超过 13 秒的未决请求。 IIS 7.5 Windows 服务器【参考方案2】:

详细解释请查看以下文章: http://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/

简而言之:

在 IIS6 中引入了回收 AppPool 功能。

IISRESET 停止并启动所有 IIS 相关服务。它尝试正常关闭所有组件,即它发送关闭请求并等待服务关闭。它等待所有服务关闭,然后重新启动它们。

AppPool 回收首先调用一个新的工作进程,然后关闭旧的工作进程。这使得停机时间小于 IISRESET。

【讨论】:

以上是关于IISreset和应用程序池回收在影响缓存方面有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

IIS应用程序池_缓存回收

IIS应用程序池_缓存回收

重启 IIS7 应用或者应用程序池的批处理bat

如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?

为啥还要回收应用程序池?

如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响