すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:TCP TIME-WAITタイムアウトを変更してネットワークパフォーマンスを向上させる

最終更新日:Oct 23, 2024

Linuxカーネルでは、TCP/IP接続は60秒間TIME-WAIT状態のままです。 TCP/IP接続がtime-WAIT状態のままである期間を変更することはできません。 ただし、TCPワークロードが重いシナリオなどの特定のシナリオでは、ネットワークパフォーマンスとリソース使用率を改善するために期間を短縮する必要があります。 カーネルバージョン4.19.43-13.al7で始まるAlibaba Cloud Linux 2とAlibaba Cloud Linux 3は、TCP接続がtime-WAIT状態のままである期間を変更するために使用できるカーネルインターフェイスを提供します。

背景情報

TIME − WAITは、TCP/IPスタック内のソケットの遷移状態である。 アプリケーションがソケットを閉じた後、ソケットはTIME-WAIT状態のままで、60秒間開いたままになり、サーバーとクライアントのデータ転送が完了します。 多数のTCP接続がTIME − WAIT状態にある場合、ネットワーク性能が損なわれる可能性がある。 Alibaba Cloud Linuxは、同時実行性の高いシナリオなどの特定のシナリオでネットワークパフォーマンスを向上させるために、TCP TIME-WAITタイムアウトを変更するために使用されるカーネルインターフェイスを提供します。 TCP TIME − WAITタイムアウトは、TCP接続がtime − WAIT状態のままである期間を示す。 カーネルインターフェイスの値は1〜600です。 単位は秒です。

使用上の注意

60秒未満のTCP TIME − WAITタイムアウトは、TCP/IPクワイエットタイム制限に違反し、古いデータが新しいデータとして受け入れられるようにするか、または複製された新しいデータが古いデータとして拒否されるようにする。 Alibaba Cloud技術者のアドバイスに基づいて、TCP TIME-WAITタイムアウトを変更することを推奨します。 TCP/IPの静かな時間については、IETF RFC 793を参照してください。

設定方法

次のいずれかの方法を使用して、TCP TIME-WAITタイムアウトを変更できます。 メソッドで使用されるコマンドで、[$TIME_VALUE] を値に置き換えて、TCP TIME-WAITタイムアウトを変更します。

警告

TCP TIME-WAITタイムアウト ([$TIME_VALUE]) を変更すると、ビジネスが利用できなくなるか、中断される可能性があります。 この操作は、オフピーク時に実行することを推奨します。

  • sysctlコマンドを実行して、TCP TIME-WAITタイムアウトを変更します。 この方法を使用してTCP TIME-WAITタイムアウトを変更すると、変更はすぐに有効になりますが、永続化できません

    sudo sysctl -w "net.ipv4.tcp_tw_timeout=[$TIME_VALUE]"
  • echoコマンドを実行して、/proc/sys/net/ipv4/tcp_tw_timeoutインターフェイスのTCP TIME-WAITタイムアウトを変更します。 この方法を使用してTCP TIME-WAITタイムアウトを変更すると、変更はすぐに有効になりますが、永続化できません

    sudo sh -c "echo [$TIME_VALUE] > /proc/sys/net/ipv4/tcp_tw_timeout"
  • /etc/sysctl.confファイルを変更して、net.ipv4.tcp_tw_timeoutパラメーターの値を変更します。 この方法を使用してTCP TIME-WAITタイムアウトを変更すると、変更はすぐに有効になり、永続化できます。 この変更は、システムの再起動後も有効です。 次の操作を実行します。

    1. 次のコマンドを実行して、sysctl.confファイルを開きます。

      sudo vim /etc/sysctl.conf
    2. Iキーを押して挿入モードに入ります。 ファイルの末尾にある次の行を追加または変更します。

      net.ipv4.tcp_tw_timeout = [$TIME_VALUE]
    3. Escキーを押して :wqと入力し、enterキーを押して変更を保存し、ファイルを閉じます。

    4. 変更を有効にするには、次のコマンドを実行します。

      sudo sysctl -p
    5. 次のコマンドを実行して、net.ipv4.tcp_tw_timeoutパラメーターの現在の値を取得します。

      sysctl net.ipv4.tcp_tw_timeout
説明

netstat -ant | grep TIME_WAIT | wc -lコマンドを実行して、サーバー上に多数の短命接続が存在するかどうかを確認できます。

レイヤ7プロキシがNGINXに設定されている場合など、多数の短命接続が存在する場合は、[$TIME_VALUE] を5に置き換えて、TCP TIME-WAITタイムアウトを5秒に設定することをお勧めします。