
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 setsockopt
Schnittstelle 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 netstat
Befehl mit der -o, --timers
folgenden 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)