Estamos enfrentando problemas estranhos regularmente com a rede em nosso servidor dedicado. Ele executa o Windows Server 2012 R2 x64 no Xeon E5620 com 16 GB de RAM e adaptador de rede Intel 82575EB.
Observe que já ajustamos HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
os valores-chave TcpTimedWaitDelay
e MaxUserPort
para 30 e 65530, respectivamente.
Em um momento aleatório, nossos sites param de responder, pelo motivo de não conseguirem se conectar a um banco de dados local. É aproximadamente 2 semanas de atividade quando esses problemas começam a ocorrer. O log do sistema começa a receber os avisos 4227 e 4231 do TCPIP. Ele declara "Uma solicitação para alocar um número de porta efêmero do espaço de porta TCP global falhou devido a todas essas portas estarem em uso".
Se eu correr
Get-Counter -Counter \TCPv4\*
ou
Get-Counter -Counter \TCPv6\*
ou
netstat -abn | find /c ":"
Eu sempre obtenho um valor razoável de 500-1500 conexões, o que não chega nem perto do limite de 65K.
Além disso, "localhost" pára de resolver para :: 1 localmente, revertendo para 127.0.0.1
Somente uma reinicialização forçada da máquina pode resolver a situação.
Poderia ser um problema no adaptador de rede?
ATUALIZAÇÃO 1
Aconteceu novamente e parecia ter sido resolvido quando reiniciei o servidor de email. Estranho, porém, todos os contadores mostraram ~ 1000 conexões com ~ 500 ativas no momento, e ainda o erro de soquete 10055 ao tentar se conectar ao banco de dados que não tem nada a ver com o servidor de email.
ATUALIZAÇÃO 2 Isso é estranho, mas a reinicialização diária dos serviços de email corrige o problema completamente.
fonte
Respostas:
Eu tive um problema semelhante com o pool esgotado de portas TCP / IP no WinSvr 2012R2 x64 por quase 1 mês em que o servidor parou de receber qualquer conexão nova e TCP. Então, eu brinquei com os valores do registro e estes são estáveis para mim:
Resultado igual ao seu. Eu acho que você deve considerar auditar seu comportamento do desempenho de seus aplicativos / scripts. Se tudo estiver ok e nada ajudar, você pode tentar colocar o servidor proxy antes do servidor de aplicativos da web, criar 2 nós com o servidor da web (IIS, Apache, ...) que compartilharão o mesmo conteúdo estático e acessarão o mesmo banco de dados ao mesmo tempo (se você tiver recursos suficientes em sua empresa).
Talvez este artigo o ajude de alguma forma: http://blogs.technet.com/b/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does-when-it- s-important.aspx
fonte
MaxUserPort
ainda funciona em 2012? Eu pensei que em 2012 você deve fazê-lo via netsh. por exemplo:netsh int ipv4 set dynamicport tcp start=25535 num=40000
Além das configurações do driver Tcpip, o intervalo efetivo de portas TCP é gerenciado no Windows Server usando o comando netsh ( origem ).
Você pode visualizar o intervalo de portas dinâmico com os seguintes comandos:
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
Para alterar o intervalo de portas, use este comando:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
Por exemplo:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
A configuração (start = 49152 num = 16384 ) também é o padrão no Windows Server 2008 em diante.
fonte
Teve esse mesmo problema no Windows Server 2016 executando grandes quantidades de testes do Selenium usando o chromewebdriver. Este script PS definirá automaticamente as configurações @Myke compartilhadas acima. O
shutdown
comando foi adicionado porque é necessária uma reinicialização para as alterações na pilha TCP.Aumentar tamanho do pool para portas TCP efêmeras
Esta foi a mensagem de erro que estávamos recebendo ao
Webdriver.Quit()
nos informar que um endereço TCP estava em uso.fonte
Você garantiu que não está vazando objetos de conexão com o banco de dados? Você precisa fechar todas as conexões de banco de dados abertas, explicitamente (com try-finalmente) ou usando um bloco {}. Esse é um problema comum sobre o qual o ASP não informa diretamente.
fonte