iisreset,recycle,refresh和restart有什么区别?

在IIS7中,有很多事情可以做,似乎重新启动网站。 我不清楚他们究竟是如何相关的。

  • 从命令行运行iisreset
  • 刷新一个网站
  • 回收应用程序池
  • 重启一个网站

有人可以解释一下每个人的确切请求吗?

iisreset将停止并启动万维网发布服务。 这当然适用于所有的应用程序池。 我相信你注意到了为每个应用程序池创build一个进程。 这个过程将处理与其相关联的所有网站的请求。 当您回收应用程序池时 ,IIS将创build一个新进程(保留旧进程)来处理请求。 然后它会尝试移动新进程的所有请求。 超时后,旧的进程将被自动终止。 您通常回收您的应用程序池以摆脱泄漏的内存(如果需要进行常规操作,即使build议按计划进行回收,您的应用程序中也可能有问题)。 至于重新启动一个网站 ,它只是停止并重新启动服务请求该特定的网站。 它将继续为同一应用程序池上的其他网站提供服务,而不会中断。

如果你有一个面向会话的应用程序,上面所有的会导致会话对象的丢失。

刷新一个网站对服务/进程/网站没有影响,只是刷新树视图的一个UI命令(也许你添加了一个你在pipe理控制台中看不到的目录)。

回答你的另外两个问题:

  • 刷新网站只是从服务器重新加载数据
  • 重新启动一个网站并没有做太多的事情。 通过停止网站,它将不再监听任何绑定的请求。 再次启动会使其再次开始收听。 为网站提供服务的stream程不受影响。

iisreset停止并启动整个networking服务器。 这就是一切 – 所有的用户在发生这种情况时都会失去联系。

回收应用程序池会停止并启动与该池中的应用程序关联的进程。 严格来说,它与网站没有任何关系(除了那些应用程序的活动内容)。

@Vlad Mucescu给出了一个很好的答案,但是他似乎描述了他提到的一个关于重叠回收的应用程序回收的部分。 有两种回收types:过程回收和重叠回收( 源MSDN ):

过程回收

工作进程隔离模式提供进程回收,其中IIS通过重新启动其工作进程来自动刷新Web应用程序。 stream程回收使问题应用程序顺利运行,并且在无法修改应用程序代码的情况下是一个特别有效的解决scheme。
循环事件发生之后的过程循环可以通过两种方式发生。
如果当前为应用程序池提供服务的工作进程终止,则作为工作进程的父进程的WWW服务(W3SVC)将重新启动一个新进程。
当工作进程终止时,一个新进程同时启动。 这种回收被称为重叠回收。 这是所有应用程序池的默认设置。

重叠的回收

在重叠的回收场景中,针对回收的进程继续处理所有剩余的请求,同时创buildreplace的工作进程。 新进程在旧工作进程停止之前启动,然后将请求导向新进程。 这种devise可以防止服务中的延迟,因为旧进程会继续接受请求,直到新进程成功初始化,并且只有在新进程准备好处理请求之后才被指示closures。