为什么 IIS 不能持续扩展?

为什么 IIS 不能持续扩展?

我有一个 WCF 服务(用 .NET 4 编写),在 Windows 2008 R2 64 位上的 IIS 7.5 下运行。

我创建了一个测试工具,它会产生 10-20 个(或更多)线程 - 每个线程都会创建一个随机负载并访问服务器。在服务器上,我记录了所有访问,并且可以看到参与 IIS 的线程 ID。

无论有多少客户端请求(同时)到达服务器,服务器都只使用 2 个线程。它基本上在它们之间循环。

但随后,IIS 突然开始使用与我向其发出的请求数量相同的线程。然后它会下降到使用 1 或 2 个线程。

有人可以解释这种行为以及我该如何解决它吗?

答案1

如何调整客户端连接管理设置,

<configuration>
  <system.net>
    <connectionManagement>
      <add address = "http://www.example.org" maxconnection = "4" />
      <add address = "*" maxconnection = "2" />
    </connectionManagement>
  </system.net>
</configuration>

答案2

您肯定达到了 system.net 默认的 2 个连接限制。因此,您需要将每个 IP 允许的 maxConnection 增加到线程数。

<configuration> 
<system.net> 
    <connectionManagement> 
      <add address = "*" maxconnection = "100" /> 
    </connectionManagement> 
  </system.net> 
</configuration> 

如果您使用的是 Windows 7,那么您将达到 IIS 上的最大 25 个请求限制。您必须在 Windows 2008 上进行负载测试才能获得真实数字。

另一件事是客户端可能不会并行执行所有线程。因此,您需要确保客户端确实并行运行所有 100 个线程。

除了这些设置之外,为了扩展 WCF,您还需要进行一些进一步的调整。最常见的调整解释如下:

http://www.codeproject.com/Articles/133738/Quick-Ways-to-Boost-Performance-and-Scalability-of

相关内容