web-dev-qa-db-ja.com

推奨TCPビジーサーバーのキープアライブ設定

非常にビジーなDebianサーバーでネットワークタイムアウトの問題が発生しており、ネットワーク上の他の多数のサーバーへの複数の接続を維持しています。

Sysctl.confの現在のTCPキープアライブ設定)は次のとおりです。

net.ipv4.tcp_keepalive_time=60
net.ipv4.tcp_keepalive_intvl=90
net.ipv4.tcp_keepalive_probes=3

おそらくこれらに問題があります。

ビジー状態のサーバーにはどのキープアライブ設定が推奨されますか?

1
UpTheCreek

したがって、tcpキープアライブはnginx/Apacheキープアライブのようなものとは異なります。

tcp keepaliveは、エラーが発生した場合に備えて接続を開いたままにします。クライアントがリクエストを受け取らなかったように、同じ接続で再試行できます。これはめったに発生せず、一般的な経験則では、NATサーバーで高いtcpキープアライブを維持して、クライアントからその背後にあるNATサーバーへのマッピングが失われないようにします。Adを実行します。サーバーごとに1日あたり約4000万の接続を処理するサーバーであり、キープアライブは次のようになります。

"net.ipv4.tcp_keepalive_intvl" => 2,
"net.ipv4.tcp_keepalive_probes" => 3,
"net.ipv4.tcp_keepalive_time" => 5,

私はまだ5秒のキープアライブ時間が長すぎると感じており、50ミリ秒以内に広告を返さないとクライアントがタイムアウトするというビジネスの性質を考えると、だから私はおそらくそれを1に落とすでしょう。私はその値をゆっくりと下げているだけなので、大きな問題は発生しません。すべてのユースケースが異なるため、同じことはお勧めしません。

だから私が言ったように、nginx/Apacheキープアライブとは大きく異なります。それはより永続的な接続です。したがって、一度接続して、その接続を再利用できます。これにより、クライアントとホスト間の遅延を減らすことができます。

Tcpポートが不足していない場合は、tcpキープアライブを変更しても、タイムアウトで表示されているものは何も変更されない可能性があります。

2
Mike

どのようなネットワークタイムアウトがありますか? TCPキープアライブは、サーバーが時間内に応答するためにビジー状態の場合は役に立ちません。TCP接続が機能しなくなった場合にのみ、検出に役立ちます。接続が非アクティブであるため、ピアがクラッシュしたか、クローズ状態の間にパケットフィルターがありました。

1
Steffen Ullrich