Conexões TCP em Estado TIME_WAIT

· Recursos

Quando um cliente inicia uma desconexão do servidor, há uma troca entre cliente e servidor para informar o estado da desconexão. Quando o processo termina, o socket do cliente fica no estado TIME_WAIT por um tempo variável. Este é um comportamento normal; em sistemas operacionais Windows, esse tempo é de aproximadamente 4 minutos por padrão.

Você pode reduzir ou eliminar esse comportamento, com cuidado, usando as seguintes alternativas.



Regedit

Você pode reduzir o valor de TIME_WAIT usando o Regedit do Windows.

1. Abra o Regedit e acesse as subchaves de registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters.

2. Crie um novo valor REG_DWORD chamado TcpTimedWaitDelay.

3. Defina o valor em segundos. Exemplo: se você definir 5, o TIME_WAIT aguardará no máximo 5 segundos.

4. Salve e reinicie o sistema.

LINGER 

Outra opção para evitar o estado TIME_WAIT é usar a opção de socket SO_LINGER. Quando habilitada, em vez de fechar a conexão graciosamente, o cliente redefine a conexão, evitando o estado TIME_WAIT.

Você pode habilitar essa opção usando a propriedade LingerState, que tem valor -1 por padrão. Se definir zero, a conexão será reiniciada ao desconectar do socket sem Timeout.

Esta opção é provavelmente a menos recomendada e deve ser usada apenas como último recurso.