
我們有一台在 Linux 上運行的機器,我們在其中公開並使用使用 Keep Alive 設定的基於 SOAP 的 Web 服務。現在,當我們透過在Linux中設定「/proc/sys/net/ipv4/tcp_keepalive_time」來更改TCP保持活動逾時值時,這會影響在此Linux機器中執行的TCP客戶端和伺服器嗎?
附加資訊:我們使用部署在 apache karaf(servicemix) 中的 apache camel-cxf 端點來公開並使用基於 SOAP 的 Web 服務。
答案1
Linux核心對TCP keepalive的內建支援影響全部啟用 keepalive 的 TCP 套接字。
不過,預設情況下不啟用 TCP keepalive:應用程式必須使用該setsockopt
介面明確請求其套接字的 keepalive 控制。
netstat
您可以使用帶有選項的命令來檢查特定套接字上是否啟用了 keepalive -o, --timers
:
這裡可以看到,同一個進程可以在兩種模式下開啟不同的網路套接字:
# 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)