Myślę, że zamiast tego musisz skonfigurować swój system operacyjny. Zmiana parametrów utrzymywania aktywności przez programy nie jest jeszcze powszechnie obsługiwana. To powinno ci pomóc:
Korzystanie z utrzymywania aktywności TCP do wykrywania błędów sieciowych
Również twoje parametry są źle dobrane. Jeśli tcp_keepalives_count=1
zadziałało, wtedy nawet jeden utracony pakiet keepalive spowoduje zerwanie połączenia. A pojedyncze pakiety często się gubią. Użyłbym następujących w /etc/sysctl.conf
na MacOSX/FreeBSD:
net.inet.tcp.keepidle =60000
net.inet.tcp.keepintvl =10000
OS będzie wtedy przerywał połączenia co najwyżej 140 sekund (60 sekund bezczynności + 8 pakietów keepalive w odstępach co 10 sekund) po utracie łączności.