11.4. ページングモードの設定

アドレスに配信されるメッセージが設定サイズを超える場合、そのアドレスはページングモードになります。

注記

ページングはアドレスごとに個別に行われます。アドレスに max-size-bytes を設定すると、一致するアドレスにそれぞれ最大サイズを指定することになります。ただし、一致するアドレスすべての合計サイズが max-size-bytes に制限されるわけではありません。

page モードであっても、メモリー不足によるエラーが原因でサーバーがクラッシュする可能性があります。JBoss EAP メッセージングは、ディスク上の各ページファイルへの参照を維持します。ページファイルが非常に多くなると、JBoss EAP メッセージングでメモリーを使い切る可能性があります。このリスクを最小限に抑えるには、page-size-bytes 属性を適切な値に設定することが重要になります。JBoss EAP メッセージングサーバーのメモリーを max-size-bytes の宛先の数倍の 2 倍以上になるよう設定する必要があります。この設定を行わなければ、メモリー不足によるエラーが発生する可能性があります。

以下の管理 CLI コマンドを使用すると、アドレスの現在の最大サイズ (バイト単位) (max-size-bytes) を読み取ることができます。

/subsystem=messaging-activemq/server=default/address-setting=ADDRESS_SETTING:read-attribute(name=max-size-bytes)

以下の管理 CLI コマンドを使用すると、アドレスの最大サイズ (バイト単位) (max-size-bytes) を設定できます。

/subsystem=messaging-activemq/server=default/address-setting=ADDRESS_SETTING:write-attribute(name=max-size-bytes,value=MAX_SIZE)

アドレス設定で別のページング関連属性の値を読み取りまたは書き込みする場合は、同様の構文を使用してください。以下の表は、各属性の説明とデフォルト値を一覧表示しています。

以下の表には、アドレス設定のパラメーターをまとめています。

表11.1 アドレス設定のページング設定

要素説明

address-full-policy

この属性の値は、ページングの決定に使用されます。有効な値を以下に示します。

PAGE
ページングを有効にしてディスクに設定された制限を超えたメッセージのページングを可能にします。
DROP
設定した制限を超えるメッセージを通知せずにドロップします。
FAIL
メッセージをドロップし、クライアントメッセージプロデューサーに例外を送信します。
BLOCK
設定された制限を超えたメッセージを送信すると、クライアントメッセージプロデューサーをブロックします。

デフォルトは PAGE です。

max-size-bytes

これは、ページングモードに入る前に、アドレスが持てる最大メモリーサイズを指定するのに使用されます。デフォルトは 10485760 です。

page-max-cache-size

システムは、ページングナビゲーション中に入出力を最適化するために、メモリー内に最大 page-max-cache-size のページファイルを保持します。デフォルトは 5 です。

page-size-bytes

これは、ページングシステムで使用される各ページファイルのサイズを指定するために使用されます。デフォルトは 2097152 です。

重要

デフォルトでは、アドレスが max-size-bytes に達すると、すべてのアドレスがページメッセージに設定されます。最大サイズに達した時点でメッセージのページングをやめる場合は、address-full-policy をそれぞれ DROPFAIL、および BLOCK に設定することで、メッセージをドロップ、クライアント側で例外にしてメッセージをドロップ、それ以上のメッセージ送信からプロデューサーをブロックのいずれかを行うように設定できます。

宛先がメッセージのページングを開始した後に address-full-policyPAGE から BLOCK に変更すると、ページ化されたメッセージをコンシューマーが消費できなくなることに注意してください。

複数のキューを持つアドレス

複数のキューがバインドされているアドレスへメッセージが転送されると、メッセージのコピーはメモリー内に 1 つだけ存在します。各キューではこのメッセージの元のコピーを参照するだけなので、元のメッセージを参照するすべてのキューがメッセージを配信すると、はじめてメモリーが解放されます。

注記

単一のレイジーキュー/サブスクリプションによって、アドレス全体の入出力のパフォーマンスが軽減されることがあります。これは、ページングシステム上の追加ストレージから送信されたメッセージがすべてのキューにあるためです。