我的组织有一个框架应用程序,它运行在多个客户端服务器上,远程客户端通过 HTTP 连接。服务器是 Server 2008 r2,通常是 VM。其中一些服务器还充当 DB 服务器、SMTP 服务器或 AD 服务器。
每隔一段时间,此框架内的后台进程就会挂起。IISReset /noforce 可以解决问题,将其设置为每周计划任务意味着我们在几个月内没有遇到过此问题。
然而今天我读到这里和这里这不是一个好的做法,我重新启动的应用程序池中可能存在非 HTTP 进程,这些进程将被中断。一篇文章建议执行一个 bat 文件,这将使计划任务变得非常简单。
我知道在 IISReset 中添加 /noforce 参数会告诉它等待当前线程退出后再重新启动,这似乎非常重要。下面的命令会让当前线程在停止前完成吗?这重要吗?
@echo off
net stop w3svc
net stop IISAdmin
net start IISAdmin
net start w3svc
@echo on
答案1
我能看到的唯一区别是IISreset /noforce
将等待最多 1 分钟让所有 IIS 服务重新启动,而 IIS 管理器将等待最多 5 分钟。
http://technet.microsoft.com/en-us/library/cc758159(v=ws.10).aspx