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

25

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

然而,在最近的一个项目中,缓存并没有通过这种方式被清除。相反,我们不得不重置IIS来清除缓存。

这些行为之间有什么区别,以及我经历的差异的原因是什么?


我发现这个回复非常有用:http://serverfault.com/a/474940/257995。与其他答案类似,但它还包括了刷新选项。 - Pooven
2个回答

21
当您回收AppPool时,存在一些重叠时间。您的不健康worker process被标记为要回收,但仍在处理它已经接收到的请求。(它将不会处理新的请求)。在所有现有请求都得到处理后,不健康的worker将被终止。
使用IIS重置,所有的worker都将被终止,并清除内存中的缓存。一旦有新的请求进来,就会创建新的worker。
因此,我认为无论是AppPool回收还是IIS重置都会清除缓存。据我所知,该缓存存储在应用程序域中。一旦不健康的worker process终止,所有缓存项都应该被销毁。

这是否意味着如果我们等待足够长的时间并在稍后访问页面,缓存将被清除并通过回收应用程序池来清除? - D.J
无法工作,我回收了一个池并检查了新的池,发现有请求挂起超过13秒。IIS 7.5 Windows服务器。 - Adeem

15
请查看以下文章以获取详细解释:http://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/ 总之:
在IIS6中引入了“应用程序池回收”功能。
IISRESET会停止并启动所有与IIS相关的服务。它试图正常关闭所有组件,即发送关闭请求并等待服务关闭。等待所有服务关闭后,再重新启动它们。
AppPool回收首先调用一个新的工作进程,然后关闭旧的工作进程。这使得停机时间比IISRESET更短。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接