Ik denk dat je in plaats daarvan je besturingssysteem moet configureren. Het wijzigen van keepalive-parameters door programma's wordt nog niet breed ondersteund. Dit zou je moeten helpen:
TCP keepalive gebruiken om netwerkfouten te detecteren
Ook uw parameters zijn slecht gekozen. Als tcp_keepalives_count=1
werkte, zal zelfs één verloren keepalive-pakket uw verbinding verbreken. En losse pakketten gaan vaak verloren. Ik zou het volgende gebruiken in /etc/sysctl.conf
op MacOSX/FreeBSD:
net.inet.tcp.keepidle =60000
net.inet.tcp.keepintvl =10000
Het besturingssysteem verbreekt dan maximaal 140 seconden (60 seconden inactief + 8 keepalive-pakketten in intervallen van 10 seconden) nadat de verbinding is verbroken.