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

时间:2011-11-23 03:56:43

标签: iis caching application-pool

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

但是,在最近的项目中,缓存不会以这种方式清除。相反,我们必须重置IIS以清除缓存。

这些行为之间有什么不同,以及我所经历的差异可能是什么原因?

2 个答案:

答案 0 :(得分:10)

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

简而言之:

回收AppPool功能是在IIS6中引入的。

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

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

答案 1 :(得分:8)

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

重置IIS后,将终止所有工作程序并清除内存中的缓存。新请求进入后,将创建新工作人员。

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