哪些配置更改需要重新启动 Web 服务?

哪些配置更改需要重新启动 Web 服务?

我的印象是某些(Web 服务器)配置更改需要循环服务。

  • 是否有经验法则来判断哪些具体更改需要重新启动服务,或者这只是一种好的做法?服务器是否总是会告诉您何时需要翻转服务?
  • 当您重新启动服务时实际上会发生什么变化,而这需要首先重新启动服务?

我特别指的是 IIS,但我有兴趣知道其他 Web 服务器是否有相同的要求。

答案1

截至 IIS 7,我能想到的很少/没有。WAS 不会加载可选组件,它只是做它自己的事。

IIS 6 在 InetInfo.exe 中托管了来自/用于/在 Metabase 中的配置的内存副本。如果发生故障,则一切都会失败(通常是同时失败),并且需要重新启动服务(如果可能,请执行 IISRESET /NOFORCE)。

99% 的时间里,回收应用程序池就足以恢复服务,或者让特别顽固的应用程序重新读取其配置(如果它通过句柄泄漏的方式退出文件更改通知,或者它厌倦了生活,或者只是挂起)。 IIS 6+ 的工作进程隔离(模式)意味着大多数故障都局限于单个进程,回收通常会起作用,在下一个请求时启动一个新的工作进程。

正如任何事情一样,也有例外,但根据“纯”网络应用程序的经验法则,这就是您需要做的全部。

COM 应用程序、使用 Web 服务器进程之外的状态的应用程序等等可能会更加麻烦,而且有些应用程序不支持自身的多个实例(关闭的那个会挂起启动的那个),在这种情况下你会有点吃不消,但总的来说……还是可以的。

IIS7 不托管任何内容的内存副本,并且所涉及的进程知道如何直接读取配置文件。

WAS(Windows 进程激活服务)读取配置文件,将其划分为应用程序池(请参阅:Inetpub\Temp\AppPools),并让工作进程读取自己的配置。我还没有见过很多这种情况,这种情况会严重到需要重启。

与 IIS <=6 不同,InetInfo 不需要存在于 IIS 7 中以供工作服务器使用 - 它纯粹是为了与需要与元数据库模拟器(管理基础对象、ADSI、旧版 IIS 6 WMI 等)对话的应用程序兼容。

至于何时重新启动服务:

  • 非常稀有
  • 当 WAS 记录错误信息,看起来像是不想活了一样
  • 当所有内容同时堆积起来(并且无法识别要回收的单个应用程序池)

但除此之外,只需回收应用程序池通常就足以恢复。

另请参阅类似的另一个答案(是的,也是我的): 尝试解决无响应/挂起/损坏的 IIS 网站时应采取哪些步骤?

高血压

答案2

通常,配置更改需要启动/停止 Web 服务器。Web 服务器在启动时读取配置文件并应用它们。Web 服务器在运行时不会动态读取配置文件。

相关内容