以编程方式回收应用程序池是否与在 IIS 中启动和停止应用程序池相同?
个人认为比较好的答案
有点,区别在于回收期间 http.sys在工作进程回收并透明地将新请求路由到新工作进程启动后,保持客户端连接处于事件状态。
此外,IIS(6 和 7)默认使用“重叠回收”。这意味着 IIS 将在关闭旧的工作进程之前
启动一个新的工作进程。一旦新进程启动,所有新请求都会被定向到新进程。
如果您停止并启动应用程序池,您将转储所有客户端连接,并且在启动新池时用户可能会收到一条服务不可用消息。
(图:应用程序池回收)
重启服务器
重启管理服务器一般指物理机的重启,但很多时候iisreset也被认为是服务器重启。是最最彻底的方式。
重启iis
iisreset将停止并启动万维网发布服务。当然,这适用于所有应用程序池。我确定您注意到为每个应用程序池创建了一个进程。此过程将处理与其关联的所有网站的请求。至于发布,只要修改了config或者bin,iis或者修改IIS上站点配置就会自动重启
回收(重启)线程池
当你回收应用程序池,IIS将创建一个新的进程(保持旧的)服务请求。然后,它尝试在新流程上移动所有请求。所以回收与重启重启还是有一定差别。但发挥的作用差不多。超时后,旧进程将被自动终止。通常,您可以回收应用程序池以消除泄漏的内存(即使建议定期执行回收操作,但如果需要进行常规操作,则应用程序中可能会有问题)。
重新启动网站
至于重启网站,它只会停止然后重新启动特定网站的服务请求。它将继续为同一应用程序池中的其他网站提供服务,而不会受到干扰。刷新网站对服务/进程/网站没有影响,只是从服务器重新加载数据。
(图:重新启动网站)
两种回收机制
流程回收
工作进程隔离模式提供了进程回收,IIS通过重新启动其工作进程来自动刷新Web应用程序。流程回收使有问题的应用程序保持平稳运行,并且在无法修改应用程序代码的情况下,这是一种特别有效的解决方案。发生回收事件之后的过程回收可以两种方式发生。如果当前为应用程序池提供服务的工作进程终止,则充当工作进程父进程的WWW服务(W3SVC)将在其位置重新启动新进程。当工作进程终止时,将同时启动一个新进程。这种回收称为重叠回收。这是所有应用程序池的默认设置。
重叠回收
在重叠的回收方案中,以回收为目标的流程将继续处理所有剩余的请求,同时创建替换工作进程。在旧工作进程停止之前,将启动新进程,然后将请求定向到新进程。这种设计可防止服务延迟,因为旧进程将继续接受请求,直到新进程成功初始化为止,并且仅在新进程准备好处理请求之后才被指示关闭。