代わりに、オペレーティングシステムを構成する必要があると思います。プログラムによるキープアライブパラメータの変更は、まだ広くサポートされていません。これは次のことに役立ちます。
また、パラメータの選択が不適切です。 tcp_keepalives_count=1
の場合 動作すると、キープアライブパケットが1つ失われただけでも、接続が切断されます。そして、単一のパケットは頻繁に失われます。 /etc/sysctl.conf
で以下を使用します MacOSX / FreeBSDの場合:
net.inet.tcp.keepidle =60000
net.inet.tcp.keepintvl =10000
OSは最大140秒(60秒のアイドル+接続が失われた後、10秒間隔で8つのキープアライブパケット)。