Hat unter Linux „/proc/sys/net/ipv4/tcp_keepalive_time“ Auswirkungen auf Client und Server?

Hat unter Linux „/proc/sys/net/ipv4/tcp_keepalive_time“ Auswirkungen auf Client und Server?

Wir haben eine Maschine, auf der Linux läuft und auf der wir SOAP-basierte Webdienste bereitstellen und nutzen, die Keep-Alive-Einstellungen verwenden. Wenn wir nun den TCP-Keep-Alive-Timeout-Wert ändern, indem wir in Linux „/proc/sys/net/ipv4/tcp_keepalive_time“ festlegen, wirkt sich dies dann sowohl auf TCP-Clients als auch auf Server aus, die auf dieser Linux-Maschine laufen?

Zusätzliche Informationen: Wir verwenden in Apache Karaf (Servicemix) bereitgestellte Apache-Camel-CXF-Endpunkte, um SOAP-basierte Webservices bereitzustellen und zu nutzen.

Antwort1

Die im Linux-Kernel integrierte Unterstützung für TCP-Keepalive wirkt sich ausalleTCP-Sockets mit aktiviertem Keepalive.

TCP-Keepalive ist jedoch nicht standardmäßig aktiviert: Die Anwendungen müssen über die setsockoptSchnittstelle explizit die Keepalive-Steuerung für ihre Sockets anfordern.

Sie können überprüfen, ob Keepalive auf einem bestimmten Socket aktiviert ist, indem Sie den netstatBefehl mit der -o, --timersfolgenden Option verwenden:

Hier können Sie sehen, dass derselbe Prozess in beiden Modi unterschiedliche Netzwerk-Sockets öffnen kann:

# 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)

verwandte Informationen