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


ソケットバッファーには、カーネルが受信したデータ、または送信する必要があるデータが一時的に保存されます。

  • 読み取りソケットバッファーには、カーネルが受信したがアプリケーションがまだ読み取っていないパケットが保持されます。
  • 書き込みソケットバッファーには、アプリケーションがバッファーに書き込んだものの、カーネルがまだ IP スタックとネットワークドライバーに渡していないパケットが保持されます。

UDP パケットが大きすぎてバッファーサイズを超えている場合、またはパケットの送受信速度が速すぎる場合、カーネルはデータがバッファーから削除されるまで、新しい受信 UDP パケットをドロップします。この場合、ソケットバッファーを増やすことでパケットロスを防ぐことができます。

重要

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

前提条件

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

手順

  1. /etc/sysctl.d/10-udp-socket-buffers.conf ファイルを作成し、要件に基づいて最大読み取りバッファーサイズまたは書き込みバッファーサイズ、あるいはその両方を設定します。

    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216

    値をバイト単位で指定します。この例の値は、バッファーの最大サイズを 16 MiB に設定します。両方のパラメーターのデフォルト値は 212992 バイト (208 KiB) です。

  2. /etc/sysctl.d/10-udp-socket-buffers.conf ファイルから設定をロードします。

    # sysctl -p /etc/sysctl.d/10-udp-socket-buffers.conf
  3. より大きなソケットバッファーサイズを使用するようにアプリケーションを設定します。

    net.core.rmem_max および net.core.wmem_max パラメーターは、アプリケーションの setsockopt() 関数が要求できる最大バッファーサイズを定義します。setsockopt() 関数を使用しないようにアプリケーションを設定すると、カーネルは rmem_default および wmem_default パラメーターの値を使用することに注意してください。

    詳細は、アプリケーションのプログラミング言語のドキュメントを参照してください。アプリケーションの開発者ではない場合は、開発者にお問い合わせください。

  4. 新しい UDP バッファーサイズを使用するには、アプリケーションを再起動します。

検証

  • パケットドロップの発生時に使用したものと同じ方法を使用して、パケットドロップの統計情報を監視します。

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る