我注意到在我的一个生产Web应用程序上,当我手动回收应用程序池时,基于对任务管理器的观察,重新启动的工作进程可能需要60秒以上才能完全销毁。但是,如果我完全停止应用程序池,则工作进程几乎立即消失 - 在1-2秒内。
因此,我的问题有两个方面:
a)为什么销毁进程(更具意义的是释放其使用/锁定的资源)在应用程序池重新启动而不是停止时需要这么长时间; 和
b)假设我已经停止了将流量定向到服务器的操作,是否有任何理由不停止/启动而不是回收?
编辑:澄清一下,在我回收或停止应用程序池之前,我会停止发送到相关服务器的流量(该服务器位于负载平衡集群中,并且我会将该服务器从负载平衡器中移除)。因此,理论上,在我对应用程序池进行任何操作时,应该没有请求发送到网站。
第二次编辑:阅读Igal的链接后,我很清楚正在发生什么。当我回收应用程序池时,会启动新的进程,但由于根本没有流量,因此它不会将新进程注册为正常运行,因此直到超时(90秒)才关闭旧进程。
有了这些知识,我清楚地知道“回收”功能是专门用于在活动服务器上中途使用的,而且由于我事先手动处理了流量,所以应该使用停止/启动。
因此,我的问题有两个方面:
a)为什么销毁进程(更具意义的是释放其使用/锁定的资源)在应用程序池重新启动而不是停止时需要这么长时间; 和
b)假设我已经停止了将流量定向到服务器的操作,是否有任何理由不停止/启动而不是回收?
编辑:澄清一下,在我回收或停止应用程序池之前,我会停止发送到相关服务器的流量(该服务器位于负载平衡集群中,并且我会将该服务器从负载平衡器中移除)。因此,理论上,在我对应用程序池进行任何操作时,应该没有请求发送到网站。
第二次编辑:阅读Igal的链接后,我很清楚正在发生什么。当我回收应用程序池时,会启动新的进程,但由于根本没有流量,因此它不会将新进程注册为正常运行,因此直到超时(90秒)才关闭旧进程。
有了这些知识,我清楚地知道“回收”功能是专门用于在活动服务器上中途使用的,而且由于我事先手动处理了流量,所以应该使用停止/启动。