IIS7 centenas de conexões em CLOSE_WAIT

3

Eu tenho um aplicativo .Net no meu servidor IIS7 que estava funcionando bem até que tive que movê-lo para outro servidor.

Mudei exatamente o mesmo código para o novo servidor e notei que depois de algumas horas o site parou de responder a solicitações remotas, mas se eu fizesse o desktop remoto para o servidor, ele respondia à solicitação feita ao host local. Se eu parar o site e o pool de aplicativos, ele funcionará bem novamente.

Consegui rastrear o problema para centenas de solicitações deixadas no estado CLOSE_WAIT para a porta http que nunca está fechada (esperei algumas horas e elas permanecem as mesmas).

Alguma idéia?

    
por rjlopes 11.11.2010 / 10:37

2 respostas

4

Qual é a sua versão do http.sys? Você pode tentar a seguinte atualização:

O aumento de latência ocorre em uma conexão HTTP com um computador que executa o Windows Vista, o Windows 7, o Windows Server 2008 ou o Windows Server 2008 R2, se a conexão for por meio de um balanceador de carga
link

Você também deve confirmar o valor do TCP KeepAliveTime. Por padrão, isso é definido para duas horas. Geralmente, é uma boa ideia reduzir isso, especialmente para servidores da Web voltados para a Internet. Cinco minutos funcionam bem em muitos casos, embora você queira definir isso como o tempo limite do estado da sessão (20 minutos por padrão) para que os desenvolvedores da Web não o odeiem. Para definir o valor para 20 minutos, use o valor hexadecimal 0x00124F80:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  
"KeepAliveTime"=dword:00124F80  

KeepAliveTime
Chave: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters]
Tipo de valor: REG_DWORD - tempo em milissegundos
Faixa válida: 1–0xFFFFFFFE
Padrão: 7.200.000 (duas horas)
Descrição: esse valor controla com que frequência o TCP tenta verificar se uma conexão ociosa ainda está intacta enviando um pacote keep-alive. Se o sistema remoto ainda estiver acessível e funcionando, ele reconhece a transmissão keep-alive. Os pacotes keep-alive não são enviados por padrão. Esse recurso pode ser ativado em uma conexão por um aplicativo.

Outro potencial suspeito são os recursos avançados de TCP / IP do Windows. Esses recursos podem apresentar problemas sutis e difíceis de diagnosticar, e os drivers precisam ser sólidos. Como a maioria dos servidores HP e Dell possuem chips Broadcom, e a Broadcom é conhecida por drivers defeituosos em relação a esses recursos, isso é algo que vale a pena considerar. Eu pessoalmente desabilito esses recursos, a menos que eu possa demonstrar um benefício mensurável para ativá-los. Aqui estão os comandos para entrar em um prompt de comando elevado que desativará os recursos:

netsh interface tcp show global  
netsh interface tcp set global autotuninglevel = disabled  
netsh interface tcp set global rss = disabled  
netsh interface tcp set global chimney = disabled  
netsh interface tcp set global netdma = disabled  
    
por 05.07.2012 / 18:31
1

Confira o artigo que pode ajudá-lo entender e solucionar o problema. Também verificarei se há driver NIC no servidor e atualize-o para o mais recente.

    
por 11.11.2010 / 12:09