Por padrão, uma conexão TCP estabelecida não tem tempo limite ( mas pode fazê-lo devido a restrições de hardware ).
Um aplicativo pode usar o mecanismo TCP keepalive para verificar se há conexões interrompidas. No Firebird (> 1.5), os keepalives TCP estão habilitados .
O "timeout" keepalive deve ser definido no servidor. O intervalo de tempo padrão de manutenção de atividade TCP no Windows é de 2 horas (mas é recomendado 5 minutos ) .
Pode ser definido na HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime
chave de registro .
Mais detalhes dos links acima:
a failed client connection will be closed after the following time interval:
KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL
Com os seguintes valores de registro correspondentes no Windows:
KEEPALIVE_TIME = KeepAliveTime (default: 7200 seconds)
KEEPALIVE_INTERVAL = KeepAliveInterval (default: 1 second)
KEEPALIVE_PROBES = TCPMaxDataRetransmissions (default: 5)
Mas:
A keepalive segment is sent every two hours by default [...]. Even if enabled, other upper-layer protocols such as NetBIOS send their own keepalive value. If the keepalive interval that the upper-layer protocol uses is less than the TCP keepalive interval, TCP keepalive value is never sent. For example, NetBIOS sessions over TCP/IP send a NetBIOS keepalive request every 60 minutes. Therefore, TCP keepalive values that are enabled for a NetBIOS session are never used.