
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キープアライブの組み込みサポートは、全てキープアライブ対応 TCP ソケット。
ただし、TCP キープアライブはデフォルトでは有効になっていません。アプリケーションは、setsockopt
インターフェイスを使用してソケットのキープアライブ制御を明示的に要求する必要があります。
netstat
次のコマンドオプションを使用して、特定のソケットでキープアライブが有効になっているかどうかを確認できます-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)