2008-12-24 135 views
30

我注意到,在我的一个生产Web应用程序中,当我手动回收应用程序池时,回收工作进程可能需要60多秒才能完全销毁,基于在任务管理器中观看它。但是,如果我完全停止应用程序池,工作进程几乎会在1-2秒内即刻消失。IIS应用程序池 - 停止/启动与回收

所以,我的问题是双重的:

一)为什么会如此之长的销毁过程(多有意义,当应用程序池,而不是回收释放/使用的资源被它锁定)停止;和

b)假设我已经停止将流量导向服务器,是否有任何理由不停止/启动而不是回收?


编辑:为了澄清,我之前无论是回收或停止应用程序池,我停止发送到有问题的服务器通信(服务器是在负载平衡群集,我删除了服务器来自负载平衡器)。因此,从理论上讲,当我对应用程序池做任何事情时,都不会有任何请求来到网站。


编辑部分德塞夫勒:读有约色的链接后,似乎很明显,我发生了什么。当我回收应用程序池时,新进程启动,但由于根本没有流量,因此它不会将新进程注册为正常运行,所以它不会关闭旧进程直到超时(即90秒)。

有了这些知识,我很清楚“回收”功能专门用于在服务器中间使用,并且由于我事先手动排空流量,所以我应该使用停止/启动。

回答

23

a)由于Overlapped Recycling。有一段时间,“旧”过程等待新过程开始。

b)不,据我所知。

+0

该链接完全回答了这两个问题,谢谢! – 2008-12-24 18:01:34

13

回收,如果我记得正确允许所有现有的请求完成,那么它将回收应用程序池。停止只是在你停止的瞬间结束它。