7.4. マルチキャストアドレスでのメモリー使用量について
マルチキャストのキューがバインドされているアドレスへメッセージが転送されると、メッセージのコピーはメモリー内に 1 つだけ存在します。各キューにはメッセージへの 参照 のみがあります。このため、関連付けられたメモリーは、メッセージを参照する すべて のキューがメッセージを配信した後にのみ解放されます。
このような状況では、コンシューマーの速度が遅いと、アドレス全体がパフォーマンスに悪影響を及ぼす可能性があります。
たとえば、以下のシナリオについて考えてみましょう。
- アドレスには、マルチキャストルーティングタイプを使用する 10 個のキューがあります。
- 低速なコンシューマーにより、キューの 1 つがメッセージを配信しません。他の 9 つのキューは引き続きメッセージの配信を継続し、空になっています。
- メッセージはアドレスに到達し続けます。低速なコンシューマーを持つキューはメッセージへの参照を蓄積し続け、ブローカーはメッセージをメモリーに保持します。
- アドレスの最大サイズに達すると、ブローカーはメッセージのページングを開始します。
このシナリオでは、低速なコンシューマーが 1 つあるため、すべて のキューのコンシューマーはページシステムからメッセージを消費することが強制され、追加の IO が必要になります。
関連情報
- ブローカーとプロデューサーとコンシューマー間のデータのフローを調整するようにフロー制御を設定する方法は、AMQ Core Protocol JMS ドキュメントの Flow control を参照してください。