O suporte integrado do kernel Linux para keepalive de TCP afeta all sockets TCP ativados pela keepalive.
O TCP keepalive não está habilitado por padrão: os aplicativos devem solicitar explicitamente o controle keepalive para seus soquetes usando a interface setsockopt
.
Você pode verificar se o keepalive está habilitado em um soquete específico usando o comando netstat
com a opção -o, --timers
:
Aqui você pode ver que o mesmo processo pode abrir diferentes soquetes de rede nos dois modos:
# netstat -anpo | grep 8999
tcp 0 0 10.10.171.44:48744 10.10.139.30:8999 ESTABLISHED 18232/java keepalive (83.39/0/0)
# netstat -anpo | grep 8009
tcp 0 0 10.10.171.44:8009 10.10.171.42:40947 ESTABLISHED 18232/java off (0.00/0/0)