第11章 JGroups サブシステムの調整

ネットワークのパフォーマンスを最適化するため、UDP マルチキャストをサポートする環境では JGroups に UDP マルチキャストを使用することが推奨されます。

注記

TCP はエラーのチェック、パケットの順番、および輻輳制御を処理するため、TCP のオーバーヘッドは UDP よりも大きく、速度も遅くなると考えられます。JGroups は UDP のこれらの機能を処理しますが、TCP はこれらの機能を独自で処理します。信頼できないネットワークや輻輳度の高いネットワークで JGroups を使用する場合やマルチキャストが使用できない場合は、TCP を選択するとよいでしょう。

本章では、JGroups スタックトランスポートプロトコル (UDP または TCP) と JGroups クラスターの通信で使用される通信プロトコルが選択済みであることを前提としています。JGroups でのクラスター通信に関する詳細は、JBoss EAP『設定ガイド』を参照してください。

11.1. JGroups 統計の監視

jgroups サブシステムの統計を有効にして、JBoss EAP のクラスタリングを監視するには、管理 CLI を使用するか、 JMX を経由します。

注記

統計を有効にするとパフォーマンスに悪影響を与えるため、必要時のみ統計を有効にしてください。

  1. 以下のコマンドを使用して JGroups チャネルの統計を有効にします。

    注記

    管理対象ドメインの場合はコマンドの前に /profile=PROFILE_NAME を追加してください。

    /subsystem=jgroups/channel=CHANNEL_NAME:write-attribute(name=statistics-enabled,value=true)

    たとえば、以下のコマンドを使用して、デフォルトの ee チャネルの統計を有効にします。

    /subsystem=jgroups/channel=ee:write-attribute(name=statistics-enabled,value=true)
  2. JBoss EAP サーバーをリロードします。

    :reload
  3. JVM 監視ツールで管理 CLI を使用または JMX を経由すると、JGroups の統計を表示できるようになります。

    • 管理 CLI を使用する場合は、統計を表示する JGroups チャネルまたはプロトコルで :read-resource(include-runtime=true) コマンドを使用します。

      注記

      管理対象ドメインでは、コマンドの前に /host=HOST_NAME/server=SERVER_NAME を追加します。

      例を以下に示します。

      • ee チャネルの統計を表示するには、以下のコマンドを使用します。

        /subsystem=jgroups/channel=ee:read-resource(include-runtime=true)
      • ee チャネルの FD_ALL プロトコルの統計を表示するには、以下のコマンドを使用します。

        /subsystem=jgroups/channel=ee/protocol=FD_ALL:read-resource(include-runtime=true)
    • JVM 監視ツールを使用して JBoss EAP に接続する場合は、「パフォーマンスの監視」を参照してください。 JMX 接続を介して JGroups MBean の統計を表示できます。

11.2. ネットワーキングおよびジャンボフレーム

可能な限り、JGroups トラフィックのネットワークインターフェースが専用の仮想ローカルエリアネットワーク (VLAN) の一部であるようにしてください。これにより、クラスターの通信を他の JBoss EAP ネットワークトラフィックから分離でき、ネットワークのパフォーマンス、スループット、およびセキュリティーの制御をより簡単にすることができます。

クラスターパフォーマンスを向上するために考慮する他のネットワーク設定は、ジャンボフレームの有効化です。ネットワーク環境がサポートする場合は、MTU (Maximum Transmission Unit) を増加してジャンボフレームを有効にすると、特にスループットが高い環境ではネットワークパフォーマンスの向上に貢献できます。

ジャンボフレームを使用するには、ネットワークのすべての NIC およびスイッチがジャンボフレームをサポートする必要があります。Red Hat カスタマーポータルの Red Hat Enterprise Linux でジャンボフレームを有効にする手順を参照してください。

11.3. メッセージのバンドル

JGroups のメッセージバンドルは、複数の小さなメッセージを大きなバンドルにアセンブルし、ネットワークのパフォーマンスを向上します。ネットワーク上で多くの小さなメッセージをクラスターノードに送信する代わりに、メッセージは最大バンドルサイズに達するか、送信する他のメッセージがなくなるまでキューに置かれます。キューに置かれたメッセージは大きなメッセージバンドルにアセンブルされた後、送信されます。

このバンドル化により、特にネットワーク通信のオーバーヘッドが高い TCP 環境では通信のオーバーヘッドが削減されます。

メッセージバンドルの設定

JGroups のメッセージバンドルは max_bundle_size プロパティーを使用して設定されます。デフォルトの max_bundle_size は 64 KB です。

バンドルサイズの調整によるパフォーマンスの向上は環境によって異なり、バンドルのアセンブル中に効率的なネットワークトラフィックと通信遅延の可能性の釣り合いがとれたかどうかによっても異なります。

以下の管理 CLI コマンドを使用して max_bundle_size を設定します。

/subsystem=jgroups/stack=STACK_NAME/transport=TRANSPORT_TYPE/property=max_bundle_size:add(value=BUNDLE_SIZE)

たとえば、 デフォルトの udp スタックに対して max_bundle_size60K に設定するには、以下を実行します。

/subsystem=jgroups/stack=udp/transport=UDP/property=max_bundle_size:add(value=60K)

11.4. JGroups スレッドプール

jgroups サブシステムは独自のスレッドプールをクラスター通信の処理に使用します。JGroups には個別に設定できる defaultinternaloob、および timer 関数のスレッドプールが含まれます。各 JGroups スレッドプールには、keepalive-timemax-threadsmin-threads、および queue-length の設定可能な属性が含まれます。

各スレッドプール属性の適切な値は、環境によって異なりますが、ほとんどの場合でデフォルト値で対応できます。

JGroups スレッドプールの設定方法の手順は、JBoss EAP『設定ガイド』を参照してください。

11.5. JGroups の送受信バッファー

jgroups サブシステムには、 UDP および TCP スタック向けの設定可能な送受信バッファーがあります。

JGroups バッファーの適切な値は環境によって異なりますが、ほとんどの場合でデフォルト値で対応できます。開発環境にて負荷がかかった状態でクラスターをテストし、バッファーサイズの適切な値を調整することが推奨されます。

注記

オペレーティングシステムが利用可能なバッファーサイズを制限し、JBoss EAP が設定済みのバッファーサイズを使用できないことがあります。JBoss EAP『設定ガイド の「バッファーサイズ警告の解決」を参照してください。

JGroups の送受信バッファーの設定方法は、 JBoss EAP『設定ガイド』を参照してください。