Conexiones TCP en TIME_WAIT

· Features

Cuando un cliente inicia una desconexión del servidor, se produce un intercambio entre cliente y servidor para informar sobre el estado de la desconexión. Cuando el proceso termina, la conexión del socket del cliente queda en TIME_WAIT durante un tiempo variable. Es un comportamiento normal; en los sistemas operativos Windows, este tiempo es de unos 4 minutos por defecto.

Puedes reducir o eliminar este comportamiento, con cuidado, usando las siguientes alternativas.



Regedit 

Puedes reducir el valor de TIME_WAIT mediante el Regedit de Windows

1. Abre Regedit y accede a las subclaves del registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters.

2. Crea un nuevo valor REG_DWORD llamado TcpTimedWaitDelay.

3. Establece el valor en segundos. Ejemplo: si pones un valor de 5, TIME_WAIT esperará como máximo 5 segundos.

4. Guarda y reinicia el sistema.

LINGER 

Otra opción para evitar el estado TIME_WAIT es usar la opción de socket SO_LINGER; si está activada, en lugar de cerrar la conexión de forma ordenada, el cliente la resetea, evitando así el estado TIME_WAIT.

Puedes activar esta opción con la propiedad LingerState; por defecto tiene el valor -1. Si la pones a cero, la conexión se reseteará al desconectarse del socket sin Timeout.

Esta es probablemente la opción menos recomendable y solo debería usarse como último recurso.