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 | この属性の値は、ページングの決定に使用されます。有効な値を以下に示します。
デフォルトは |
max-size-bytes |
これは、ページングモードに入る前に、アドレスが持てる最大メモリーサイズを指定するのに使用されます。デフォルトは |
page-max-cache-size |
システムは、ページングナビゲーション中に入出力を最適化するために、メモリー内に最大 |
page-size-bytes |
これは、ページングシステムで使用される各ページファイルのサイズを指定するために使用されます。デフォルトは |
デフォルトでは、アドレスが max-size-bytes
に達すると、すべてのアドレスがページメッセージに設定されます。最大サイズに達した時点でメッセージのページングをやめる場合は、address-full-policy
をそれぞれ DROP
、FAIL
、および BLOCK
に設定することで、メッセージをドロップ、クライアント側で例外にしてメッセージをドロップ、それ以上のメッセージ送信からプロデューサーをブロックのいずれかを行うように設定できます。
宛先がメッセージのページングを開始した後に address-full-policy
を PAGE
から BLOCK
に変更すると、ページ化されたメッセージをコンシューマーが消費できなくなることに注意してください。
複数のキューを持つアドレス
複数のキューがバインドされているアドレスへメッセージが転送されると、メッセージのコピーはメモリー内に 1 つだけ存在します。各キューではこのメッセージの元のコピーを参照するだけなので、元のメッセージを参照するすべてのキューがメッセージを配信すると、はじめてメモリーが解放されます。
単一のレイジーキュー/サブスクリプションによって、アドレス全体の入出力のパフォーマンスが軽減されることがあります。これは、ページングシステム上の追加ストレージから送信されたメッセージがすべてのキューにあるためです。