我注意到,在我的一个生产Web应用程序中,当我手动回收一个应用程序池时,根据在任务管理器中的观察,回收的工作进程可能要花费60多秒才能真正完全销毁。但是,如果我完全停止应用程序池,则工作进程几乎立即消失-在1-2秒内。

因此,我的问题有两个:

a)当应用程序池被回收而不是停止时,为什么要花这么长时间销毁该进程(更有意义的是释放它使用/锁定的资源);和

b)假设我已停止将流量定向到服务器,是否有任何理由不停止/开始而不是回收?

编辑:
为了明确起见,在我回收或停止应用程序池之前,我停止将流量发送到有问题的服务器(该服务器位于负载平衡的群集中,并且从负载平衡器中删除了该服务器)。因此,从理论上讲,在我对应用程序池执行任何操作时,不应有任何请求到达该网站。

编辑零件Deux:
在阅读了Igal的链接之后,对我来说似乎很清楚发生了什么。当我回收应用程序池时,新进程已启动,但是由于根本没有流量,因此它不会将新进程注册为运行中的,因此它不会关闭旧进程直到超时(即90秒)。

有了这些知识,对我来说很明显,“回收”功能专门用于实时服务器的中游,并且由于我是事先手动排干流量,所以应该改用停止/启动。

最佳答案

a)由于Overlapped Recycling。在一段时间内,“旧”进程会等待新进程启动。

b)不,据我所知。

关于iis - IIS应用程序池-停止/启动与回收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/391878/

10-11 22:33
查看更多