IIS应用程序池 - 停止/启动VS回收
-
23-08-2019 - |
题
我已经注意到,我的生产Web应用程序之一,当我手动回收一个应用程序池,回收工作进程可以利用60+秒向上实际上完全被破坏的基础上,看着它在任务管理器。但是,如果我完全停止的应用程序池,工作进程消失几乎瞬间 - 在1-2秒
所以,我的问题是双重的:
一)为什么会如此之长,以破坏该过程(和更有意义,释放使用/时,应用程序池被回收,而不是停止的资源通过它锁定);和
二)假设我已经不再被定向到服务器的流量,有什么理由不停止/启动,而不是循环?
修改强>结果 为了澄清,我之前无论是回收或停止应用程序池,我停止流量(服务器是在负载平衡群集,我删除从负载均衡服务器)被发送到服务器的问题。因此,从理论上讲,应该有来的网站,我做任何的应用程序池的时间的请求。
修改部分德塞夫勒:强>结果 阅读有约色的链接后,似乎很明显,我发生了什么。当我回收应用程序池,将新进程启动,但由于没有流量的话,那是不是注册新的工艺运行,所以它不会关闭旧直到超时(这是90秒)。
通过这些知识,很明显对我来说,“回收”功能专门用于使用现场服务器上中游,因为我手动排水流量事前,我应该使用停止/而不是开始。
解决方案
一)因为重叠回收的。存在该“旧”处理等待新的启动时间段。
b)不据我所知。
其他提示
如果我没有记错的循环允许所有现有请求完成,然后将回收的应用程序池。止损只是结束它在精确的瞬间,你停下来。
根据这个链接,
停止 - 由停止应用程序池,你指示服务于该应用程序池的所有IIS工作进程关闭, 并防止任何额外的工作进程被启动,直到 应用程序池再次启动。 :该开始从容 工作进程的关闭,其中每个工作进程试图 排出所有它的请求,然后退出。强>
如果一个工作进程没有在指定的时间量内退出 通过在中processModel的shutdownTimeLimit配置属性 每个应用程序池的定义的元素(默认值:90秒),WAS 将被迫终止,它(这并不发生,如果本机调试 附)。
因此,停止应用程序池是一种破坏性的行动, 原因卸载ASP.NET应用程序域,FastCGI的子进程, 和任何正在处理中的应用程序状态的丢失。
<强>回收强> - 回收的应用程序池导致所有当前正在运行的IIS工作进程在该应用程序池是正常 关机,但不像停止池,新的IIS工作进程可以 按需处理的后续请求来启动。
回收的应用程序池是引起的复位的好方法 应用程序状态和IIS工作缓存任何配置 不得到自动更新过程(主要是全球 注册表项),而不破坏服务器的运行。这个 使回收的应用程序池的一个伟大的选择 IISRESET在大多数情况下。