MaxKeepAliveRequests IIS7(与NLB)

我们有一个在一个NLB集群中的几个节点上运行的IIS7。 NLB节点被设置为Affinity:None,以便新的连接遍布它们。 我们希望KeepAlive打开,这样我们可以获得更好的性能,但是我们发现当集群中的一个节点消失时,其所有stream量都会移动到其他节点上,但是永远不会移回。 尽pipe我们正在运行Web服务,但是我们只有几个客户端执行CPU密集型任务,所以我们发现一台服务器将被殴打致死,而另一台服务器却无所事事!

我们希望能够像Apache的MaxKeepAliveRequests那样限制给定连接上的请求数量,这样IIS就会定期强制客户端重新连接,从而平衡集群。

这是IIS7支持的东西吗? 这是“正常”的人吗?

如果这是一个真正的无状态会话,则可以在IIS7中完全禁用KeepAlive:

appcmd set config /section:httpProtocol /allowKeepAlive:false 

如果大部分工作仅由less数客户完成,则不应该增加大量的开销。 不过,一定要先testing一下。

我无法find一个合适的解决scheme,所以写我自己的。 我已经logging了IIS和NLB中的configuration设置。 本文提供了为实现MaxKeepAliveRequests设置所需的HTTP模块代码,以确保没有客户端仍粘在NLB群集中的同一节点上。

使用IIS和MaxKeepAliveRequests跨NLB进行连接平衡

http://www.bigsoft.co.uk/blog/index.php/2011/09/21/connection-balancing-across-nlb-using-iis-and-maxkeepaliverequests