强制快速停止 IIS 7.5 或应用程序池

强制快速停止 IIS 7.5 或应用程序池

我们有一个繁忙的网络服务器,每秒处理大约 1000 个 asp.net 请求。

我们有一个部署脚本,它从我们的开发箱中复制已编译的 asp.net。

该脚本首先停止生产服务器上的 IIS,复制代码,然后重新启动。

我们使用以下命令来停止该站点的应用程序池:

%windir%\system32\inetsrv\appcmd 停止应用程序池/apppool.name:ourappname

问题在于,这会停止接受新请求,但会等待现有请求完成。通常有少数请求需要一分钟才能完成,在此期间不会处理任何新请求。因此,为了满足十几个请求,我们在等待 12-20 个请求完成的一分钟左右的时间里错过了处理 1000 * 60 = 60,000 个请求的机会。这很愚蠢。

我们最想做的是强制应用程序池在 x 秒内停止。这似乎不可能。有没有更好的方法来完成我们正在做的事情,即快速停止 iis 7?

答案1

为什么需要停止并重新启动应用程序池?更新 bin 目录中的文件将导致应用程序池在相关点重新启动。完成部署后,如果您未更新 bin 中的任何内容,则保存对 web.config 文件的更改将导致应用程序池重新启动。

如果您确实需要将其关闭,那么您可以在 IIS 级别(w3wp 服务)进行操作。

net stop w3wp
#Deploy
net start w3wp

相关内容