5.3. システム全体の TCP ソケットバッファーの増加


システム全体の TCP ソケットバッファーには、カーネルが受信したデータ、または送信する必要があるデータが一時的に保存されます。net.ipv4.tcp_rmem (読み取り) と net.ipv4.tcp_wmem (書き込み) の両方のソケットバッファーカーネル設定には、それぞれ最小値、デフォルト値、および最大値の 3 つの設定が含まれています。

重要

バッファーサイズを大きすぎる設定にすると、メモリーが無駄に消費されます。各ソケットはアプリケーションが要求するサイズに設定でき、カーネルはこの値を 2 倍にします。たとえば、アプリケーションが 256 KiB のソケットバッファーサイズを要求し、100 万個のソケットを開く場合、システムは潜在的なソケットバッファースペースとしてのみ最大 512 GB RAM (512 KiB x 100 万) を使用できます。

さらに、最大バッファーサイズの値が大きすぎると、レイテンシーが長くなる可能性があります。

前提条件

  • かなりの割合で TCP パケットがドロップされました。

手順

  1. 接続の遅延を決定します。たとえば、クライアントからサーバーに ping を実行して、平均ラウンドトリップ時間 (RTT) を測定します。

    # ping -c 10 server.example.com
    ...
    --- server.example.com ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 9014ms
    rtt min/avg/max/mdev = 17.208/17.056/19.333/0.616 ms
    Copy to Clipboard Toggle word wrap

    この例では、レイテンシーは 17 ミリ秒です。

  2. 次の式を使用して、チューニングするトラフィックの帯域幅遅延積 (BDP) を計算します。

    connection speed in bytes * latency in seconds = BDP in bytes
    Copy to Clipboard Toggle word wrap

    たとえば、レイテンシーが 17 ミリ秒の 10 Gbps 接続の BDP を計算するには、次のようにします。

    (10 * 1000 * 1000 * 1000 / 8) * 0.017 = 21,250,000 bytes
    Copy to Clipboard Toggle word wrap
  3. /etc/sysctl.d/10-tcp-socket-buffers.conf ファイルを作成し、要件に基づいて、最大読み取りバッファーサイズまたは書き込みバッファーサイズ、またはその両方を設定します。

    net.ipv4.tcp_rmem = 4096 262144 42500000
    net.ipv4.tcp_wmem = 4096 262144 42500000
    Copy to Clipboard Toggle word wrap

    値をバイト単位で指定します。環境に最適化された値を特定するには、以下の大体の目安を参考にしてください。

    • デフォルトのバッファーサイズ (2 番目の値): この値をわずかに増やすか、最大でも 524288 (512 KiB) に設定します。デフォルトのバッファーサイズが大きすぎると、バッファーの崩壊が発生し、その結果、遅延が急増する可能性があります。
    • 最大バッファーサイズ (3 番目の値): 多くの場合、BDP の 2 倍から 3 倍の値で十分です。
  4. /etc/sysctl.d/10-tcp-socket-buffers.conf ファイルから設定をロードします。

    # sysctl -p /etc/sysctl.d/10-tcp-socket-buffers.conf
    Copy to Clipboard Toggle word wrap
  5. net.ipv4.tcp_rmem または net.ipv4.tcp_wmem パラメーターの 2 番目の値を変更した場合は、新しい TCP バッファーサイズを使用するようにアプリケーションを再起動します。

    3 番目の値のみを変更した場合は、自動チューニングによってこれらの設定が動的に適用されるため、アプリケーションを再起動する必要はありません。

検証

  1. オプション: iperf3 を使用して TCP スループットをテストします
  2. パケットドロップが発生したときに使用したのと同じ方法を使用して、パケットドロップ統計を監視します。

    パケットドロップが依然として発生するが、レートが低い場合は、バッファーサイズをさらに増やします。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat