Por vezes, o servidor OES Linux falha em detectar um host cliente que ficou inativo repentinamente devido a um erro da estação de trabalho ou a uma queda de energia. Contudo, a conexão fica ativa pelo tempo de espera padrão (12 a 15 minutos) antes de ser apagada. Se você definiu as conexões simultâneas para 1, é recomendado encerrar a conexão manualmente ou aguardar pelo tempo de espera estimado antes de efetuar login novamente. Esta situação ocorre quando o processo de watchdog falha em fechar a conexão com perfeição. Por isso, se as conexões simultâneas estiverem definidas para 1 e a conexão não for apagada pelo watchdog, os usuários não poderão efetuar login. O kernel do Linux fornece três parâmetros para alterar o funcionamento das sondas keepalive no lado do servidor. Use esses parâmetros para implementar uma alternativa no nível de TCP.
Esses parâmetros estão disponíveis em no diretório /proc/sys/net/ipv4/ .
tcp_keepalive_time: determina a frequência de envio dos pacotes keepalive de TCP para manter a conexão ativa se não estiver sendo usada no momento. Este valor apenas é usado quando keepalive está habilitado.
O tcp_keepalive_time aceita valores inteiros em segundos. O valor padrão é 7200 segundos ou 2 horas. Isto é suficiente para a maioria dos hosts e não exige muitos recursos de rede. Se você definir um valor mais baixo, ele usa os recursos da rede com o tráfego não necessário.
tcp_keepalive_probes: determina a frequência de envio das sondas keepalive de TCP antes de decidir interromper uma conexão.
O tcp_keepalive_probes aceita um valor inteiro, sendo recomendado um inferior a 50 dependendo dos valores tcp_keepalive_time e tcp_keepalive_interval. O padrão é definido para 9 sondas antes de informar o aplicativo de uma conexão interrompida.
tcp_keepalive_intvl: determina a duração da resposta de cada sonda keepalive. Este valor é importante para calcular o tempo antes de a conexão ser desativada pelo keepalive.
O tcp_keepalive_intvl aceita um valor inteiro e o padrão é 75 segundos. Desta maneira, 9 sondas com 75 segundos cada levarão aproximadamente 11 minutos. Os valores padrão das variáveis tcp_keepalive_probes e tcp_keepalive_intvl podem ser usados para avaliar o tempo padrão antes de a conexão ser encerrada pelo keepalive.
Modifique esses parâmetros de maneira que a mudança não gere muito tráfego de rede extra e ainda resolva o problema. Um exemplo de modificação poderia ser o seguinte (tempo de detecção de três minutos):
tcp_keepalive_time set -120
tcp_keepalive_probes - 3
tcp_keepalive_intvl - 20
NOTA:Tenha cuidado com as configurações do parâmetro e evite definir as conexões já válidas.
As configurações entram em vigor imediatamente após os arquivos serem modificados. Não é necessário reiniciar qualquer serviço. Contudo, as configurações são válidas apenas para a sessão atual. Após o servidor ser reiniciado, as configurações reverterão para o padrão.
Para tornar as configurações permanentes (mesmo após uma reinicialização), faça o seguinte:
Adicione as seguintes entradas ao /etc/sysctl.conf.
net.ipv4.tcp_keepalive_time=120
net.ipv4.tcp_keepalive_probes=3
net.ipv4.tcp_keepalive_intvl=20
Recomendamos estas configurações apenas se todos os clientes e servidores estiverem conectados por LAN.