什么是“友好”的方式重新启动IIS?

在Windows Server 2003 Web上运行IIS 6。

我们有一些泄漏内存的第三方组件,所以我们已经安排周期性的工作来重新启动IIS。 这些工作只是简单地调用iisrestart /reset来完成这个工作……但是它肯定会产生一大堆事件日志事件 – 包括3个错误和一个警告。 也许我们做错了?

有没有一个“清洁”的方式来回收IIS进程(ES)没有Windows让我们感到不安? 随着我们的监控改进,prod Web服务器上的错误事件会导致不必要的干扰。


对于那些好奇的人来说,事件的“周期”看起来是这样的(为简洁起见,我已经简略了一些描述文字)。 这些都发生在1 – 2秒的范围内:

警告 – WinRM – ID 10149 – WinRM服务不侦听WS-Management请求

信息 – IISCTLS – ID 6 – IIS重置在停止服务时遇到错误

信息 – 服务控制pipe理器 – ID 7035 – SMTP服务已成功发送停止控制

信息 – 服务控制pipe理器 – ID 7035 – Windows远程pipe理服务已成功发送停止控制

信息 – 服务控制pipe理器 – ID 7036 – Windows远程pipe理进入停止状态

错误 – 服务控制pipe理器 – ID 7034 – 万维网发布服务意外终止。 它已经完成了这个x次

错误 – 服务控制pipe理器 – ID 7034 – IISpipe理服务意外终止

错误 – 服务控制pipe理器 – ID 7034 – SMTP服务意外终止

信息 – IISCTLS -ID 4 – 从用户接收的IIS kill命令。

信息 – IISCTLS – ID 2 – 从用户接收的IIS停止命令。

信息 – 服务控制pipe理器 – ID 7035 – IISpipe理服务服务已成功发送一个启动控件

信息 – 服务控制pipe理器 – ID 7035 – 万维网发布服务服务已成功发送一个启动控件

信息 – 服务控制pipe理器 – ID 7035 – SMTP服务已成功发送启动控制

信息 – 服务控制pipe理器 – ID 7035 – Windows远程pipe理服务已成功发送启动控制

您是否在工作进程隔离模式下运行IIS? 如果是这样,更好的解决scheme将是使用应用程序池回收function。 您可以将违规应用程序放入自己的池中,然后根据各种条件(每X分钟,或者当内存使用量达到Y兆字节,或者当您有Z请求到应用程序等时)重新启动其进程。

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/003ed2fe-6339-4919-b577-6aa965994a9b.mspx?mfr=true

马特答案是最好的(IMO),另一个select是杀死应用程序池的过程。

这需要更多的工作,因为你必须:

  1. 确定要杀死的应用程序池的PID。
  2. 杀死PID

但是,这不会执行整个IIS服务(这是您的日志中生成的消息)的回收。