【发布时间】:2010-09-28 08:36:26
【问题描述】:
我注意到,在我的一个生产 Web 应用程序中,当我手动回收应用程序池时,根据在任务管理器中的观察,回收的工作进程可能需要超过 60 秒才能完全销毁。但是,如果我完全停止应用程序池,工作进程几乎会在 1-2 秒内立即消失。
所以,我的问题有两个:
a) 当应用程序池被回收而不是停止时,为什么销毁进程需要这么长时间(更有意义的是释放它使用/锁定的资源);和
b) 假设我已停止将流量定向到服务器,是否有任何理由不停止/启动而不是回收?
编辑:
为了澄清,在我回收或停止应用程序池之前,我停止将流量发送到有问题的服务器(服务器位于负载平衡集群中,我从负载平衡器中删除了服务器)。因此,理论上,当我对应用程序池执行任何操作时,应该不会有任何请求进入网站。
编辑第二部分:
阅读 Igal 的链接后,对我来说发生了什么似乎很明显。当我回收应用程序池时,新进程启动,但由于根本没有流量,它没有将新进程注册为正常运行,因此它不会关闭旧进程,直到超时(即 90秒)。
有了这些知识,我很清楚“回收”功能专门用于实时服务器的中游,并且由于我事先手动排出流量,我应该改用停止/启动。
【问题讨论】:
标签: iis application-pool worker-process recycle