Jag tror att du måste konfigurera ditt operativsystem istället. Ändra keepalive-parametrar efter program stöds inte i stor utsträckning än. Detta bör hjälpa dig:
Använda TCP keepalive för att upptäcka nätverksfel
Dina parametrar är också dåligt valda. Om tcp_keepalives_count=1
fungerade så kommer även ett förlorat keepalive-paket att bryta din anslutning. Och enstaka paket försvinner ofta. Jag skulle använda följande i /etc/sysctl.conf
på MacOSX/FreeBSD:
net.inet.tcp.keepidle =60000
net.inet.tcp.keepintvl =10000
OS kommer då att avbryta anslutningar i högst 140 sekunder (60 sekunders inaktiv + 8 keepalive-paket i 10 sekunders intervall) efter att anslutningen tappats.