我们有一个繁忙的networking服务器处理大约1000个asp.net请求/秒。
我们有一个部署脚本,从我们的开发箱中复制编译好的asp.net。
该脚本首先停止生产服务器上的IIS,复制代码,然后重新启动。
我们使用以下命令来停止该网站的应用程序池:
%windir%\ system32 \ inetsrv \ appcmd stop apppool /apppool.name:ourappname
问题是这停止接受新的请求,但等待现有的请求完成。 通常会有一些请求花费一分钟才能完成,在这段时间内没有新的请求被提供。 所以为了达到十几个要求,我们错过了在一分钟左右的时间里,一直到12-20才完成的1000 * 60 = 60,000个请求。 这是愚蠢的。
我们想要做的是强制一个应用程序池在x秒内停止。 这似乎不可能。 有没有更好的方法来完成我们正在做的事情,即iis 7的快速停止?
为什么你需要停止并重新启动应用程序池? 更新bin目录中的文件将导致应用程序池在相关点重新启动。 完成部署后,如果未更新bin中的任何内容,则对web.config文件进行更改将导致重新启动应用程序池。
如果你需要把它放下来,那么你可以在IIS级别(w3wp服务)这样做。
net stop w3wp #Deploy net start w3wp