在 IIS7 中,您可以执行许多操作,似乎可以重新启动网站。我不清楚它们之间究竟有何关联。
- 从命令行运行 iisreset
- 刷新网站
- 回收应用程序池
- 重启网站
有人可以具体解释一下每个人的作用吗?
答案1
重置将停止并启动万维网发布服务。这当然适用于您的所有应用程序池。我相信您注意到了为每个应用程序池创建的进程。此进程将处理与其关联的所有网站的请求。当您回收应用程序池,IIS 将创建一个新进程(保留旧进程)来处理请求。然后,它会尝试将所有请求转移到新进程上。超时后,旧进程将自动终止。您通常会回收应用程序池以清除泄漏的内存(如果这需要定期操作,您的应用程序可能会出现问题,尽管建议进行计划回收)。至于重启网站,它只是停止并重新启动为该特定网站提供请求服务。它将继续为同一应用程序池上的其他网站提供服务,不会中断。
如果您有一个面向会话的应用程序,上述所有情况都将导致会话对象的丢失。
刷新网站对服务/流程/网站没有影响,仅仅是一个刷新树视图的 UI 命令(也许您添加了在管理控制台中看不到的目录)。
答案2
回答您的另外两个问题:
- 刷新网站只是从服务器重新加载数据
- 重启网站实际上并没有多大作用。通过停止网站,它将不再监听任何绑定上的请求。重新启动网站会使其重新开始监听。为网站提供服务的进程不受影响。
答案3
iisreset 停止并启动整个网络服务器。就是这样 - 当发生这种情况时,所有用户都会失去连接。
回收应用程序池会停止并启动与该池中的应用程序相关的进程。严格来说,这与网站没有任何关系(除了这些应用程序中的活动内容)。
答案4
@Vlad Mucescu 给出了一个很好的答案,但他在描述应用程序回收的部分似乎提到了重叠回收。回收类型有两种:进程回收和重叠回收(来源MSDN):
工艺回收
工作进程隔离模式提供进程回收,在该模式下,IIS 通过重新启动其工作进程来自动刷新 Web 应用程序。进程回收可使有问题的应用程序平稳运行,在无法修改应用程序代码的情况下
,这是一种特别有效的解决方案。在发生回收事件后进行的进程回收可以以两种方式进行。
如果当前为应用程序池提供服务的工作进程终止,则 WWW 服务 (W3SVC)(作为工作进程的父进程)将在其位置重新启动一个新进程。
当工作进程终止时,将同时启动一个新进程。这种类型的回收称为重叠回收。它是所有应用程序池的默认设置。
重叠回收
在重叠回收方案中,回收的目标进程继续处理所有剩余请求,同时创建替代工作进程。新进程在旧工作进程停止之前启动,然后将请求定向到新进程。这种设计可防止服务延迟,因为旧进程会继续接受请求,直到新进程成功初始化,并且仅在新进程准备好处理请求后才指示其关闭。