Qual é o tempo limite padrão da conexão TCP no Windows? Existe uma chave do Registro para configurá-lo ou ela é definida dinamicamente?
28
No Windows, o valor é dinâmico para conexões estabelecidas , embora o padrão para conexões iniciais seja 72 segundos. As configurações do Registro são definidas neste artigo:
http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services: \ Tcpip \ Parameters
TcpInitialRTT : define quais são as configurações de tempo limite inicial para novas conexões. Esse número em segundos é dobrado cada vez que é retransmitido antes do tempo limite da conexão. O padrão é 3.
TcpMaxConnectRetransmissions : define o número de retransmissões antes do tempo limite de uma conexão. O padrão é 5.
TcpMaxDataRetransmissions
para 16 (o padrão é 5), mas o PuTTY ainda reduz as conexões muito rapidamente em breves interrupções, enquanto o ssh no OS X e na mesma rede as mantém bem. superuser.com/questions/529511/…Normalmente, "tempo limite de conexão" refere-se ao tempo limite para criar a conexão inicial com um host. Em muitos sistemas (Windows 7 incluído), esse valor é configurado usando configurações separadas dos tempos limite para comunicações contínuas após o estabelecimento de uma conexão. Esta resposta aborda o cenário "conexão inicial" para o Windows 7, que é diferente do XP.
No Windows 7, são necessários dois hotfixes para oferecer suporte ao ajuste das configurações de tempo limite da conexão. As novas configurações podem ser definidas com o comando 'netsh'.
Hotfix # 2786464: O hotfix permite a configuração da quantidade máxima de retransmissão SYN TCP no Windows 7 ou Windows Server 2008 R2
Hotfix # 2472264: Você não pode personalizar algumas configurações de TCP usando o comando netsh no Windows Server 2008 R2
Do artigo do hotfix 2786464:
O primeiro hotfix adiciona uma configuração 'MaxSynRetransmissions' que permite alterar a configuração de repetição do valor padrão de 2. O segundo adiciona a configuração 'InitialRto' que permite alterar o valor RTO inicial do padrão de 3000ms (sim, milissegundos), mas apenas para algo menor que 3000ms; não pode ser aumentado. Dependendo da sua situação, você pode precisar apenas do hotfix 'MaxSynRetransmissions'.
Instale os dois hotfixes, reinicie e abra uma janela de comando como Administrador. Reinicializações adicionais não são necessárias para chamadas de comandos netsh subsequentes.
Nota: O telnet do Windows é usado como referência para o tempo limite real da conexão. Ele precisa ser instalado separadamente, mas é fácil de fazer.
Links / elogios adicionais:
fonte
TcpInitialRTT e TcpMaxConnectRetransmissions podem não estar presentes no Vista e no Windows 2008. Este documento da Microsoft não os inclui. http://download.microsoft.com/download/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc
E isso diz que pelo menos o TcpInitialRTT se foi, embora eu não saiba o quão confiável é. http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE
fonte
Se entendi sua pergunta corretamente, você está se referindo a:
TcpTimedWaitDelay
Essa chave determina o tempo que deve decorrer antes que o TCP / IP possa liberar uma conexão fechada e reutilizar seus recursos. Esse intervalo entre o fechamento e a liberação é conhecido como o estado TIME_WAIT ou duas vezes o estado máximo da vida útil do segmento (2MSL). Durante esse período, a reabertura da conexão com o cliente e o servidor custa menos do que estabelecer uma nova conexão. Ao reduzir o valor dessa entrada, o TCP / IP pode liberar conexões fechadas mais rapidamente e fornecer mais recursos para novas conexões. Ajuste esse parâmetro se o aplicativo em execução exigir uma liberação rápida, a criação de novas conexões ou um ajuste devido a uma baixa taxa de transferência causada por várias conexões no estado TIME_WAIT.
A chave exata é: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay
Você pode não configurá-lo se estiver usando o Win2008 ou posterior, mas o padrão é 240 decimal (240 segundos ou 4 minutos). Você pode adicionar a chave ao registro com um valor diferente, que entrará em vigor após uma reinicialização (testada no Windows Server 2008R2 em um ambiente de produção). Este é um valor absurdamente alto, dada a qualidade das redes modernas.
Eu tinha um aplicativo há menos de um mês, executando em um servidor que esgotava o número máximo de conexões que o Windows pode suportar e matava todos os serviços de rede desse servidor regularmente. Mais de 16.000 conexões no netstat -a quando você ainda gerencia o RDP no servidor. Definimos o valor como 30 decimal (30 segundos) e pronto, o problema foi resolvido - menos de 10.000 conexões simultâneas (já que o aplicativo as estava abrindo e fechando rapidamente) e sem problemas de taxa de transferência.
fonte