Por que o IIS não escala consistentemente?

1

Eu tenho um serviço WCF (escrito no .NET 4) em execução no IIS 7.5 no Windows 2008 R2 de 64 bits.

Eu criei uma ferramenta de teste que gera de 10 a 20 (ou mais) threads - cada thread cria uma carga aleatória e atinge o servidor. No servidor, eu registro todos os acessos e vejo os IDs de encadeamento engajados no IIS.

Independentemente de quantas solicitações do cliente atingiram o servidor (ao mesmo tempo), o servidor usa apenas 2 threads. Basicamente, circula entre eles.

Mas, do nada, o IIS começará a usar tantos encadeamentos quanto o número de solicitações que eu envio nele. E, mais tarde, vai cair para usar 1 ou 2 threads.

Alguém pode explicar esse comportamento e o que posso fazer para corrigir isso?

    
por AngryHacker 11.02.2012 / 03:37

2 respostas

2

Que tal ajustar as configurações de gerenciamento de conexão do cliente,

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

Você está definitivamente atingindo o limite de conexão padrão 2 do system.net. Então, você precisa aumentar o maxConnection permitido por IP para o número de threads.

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

Se você tiver o Windows 7, você atingirá o limite máximo de 25 solicitações no IIS. Você terá que carregar o teste no Windows 2008 para obter o número real.

Outra coisa é que o cliente pode não estar executando todos os threads em paralelo. Então, você precisa ter certeza de que o cliente está realmente executando todos os 100 threads em paralelo.

Além dessas configurações, para aumentar o WCF, é necessário fazer alguns ajustes adicionais. Os ajustes mais comuns são explicados aqui:

link

    
por 11.02.2012 / 18:42