在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请求到应用程序等时)重新启动其进程。
马特答案是最好的(IMO),另一个select是杀死应用程序池的过程。
这需要更多的工作,因为你必须:
但是,这不会执行整个IIS服务(这是您的日志中生成的消息)的回收。