Translated message

A translation of this page exists in English.

デスティネーションでメモリの使用量が 100% を超える

Solution Verified - Updated -

Environment

  • JBoss Fuse 6.0 P3 以降
  • JBoss Fuse 6.1

Issue

  • キューのデスティネーションの一部で、memoryUsage が 1000% であると示されるのはなぜですか?
  • ブローカーに新規メッセージがページされるのはいつですか?
  • ブローカーにページされるメッセージはどのぐらいになりますか?

Resolution

AMQ-4495 ではストアカーソルの動作が変更されました。ここでは、メッセージをさらにページする際に、宛先に設定された memoryLimit が確認された場合でも、メッセージの次の maxPageSize を取得します。メッセージがページされる前に、メッセージに対してブローカーで利用可能なメモリを確認してください (設定の systemUsage セクションの memoryUsage セクション)。

表示されるパーセンテージは、メッセージのサイズと maxPageSize によって異なります。

たとえば、デフォルトのストアカーソルでは、maxPageSize=200、memoryLimit=10MB、messageSize=1MB、useCache=true となる宛先ポリシーが影響を受けるとします。この時、ブローカーの memoryUsage は 1GB であるため、この例には関係ありません。

プロデューサーをキューに接続すると、1000 メッセージ (1000MB のデータ) が送られます。ストアカーソルを使用するとデフォルトの上限は 70% になるため、キューが 700KB (.70*1MB) に到達すると、設定されるストアに残りの入力メッセージがプッシュされます。memoryPercentage が 70% であることが分かります。

プロデューサーが終了すると、コンシューマーに接続します。メッセージがキューからなくなると、memoryPercentage が落ちはじめるのが分かります。70% 以下になるとすぐに、メッセージの次の maxPageSize (200MB) になるトリガーが発生します。200MB は 1MB より上で、統計に反映すると 約 19900% 増加となります。キューが再度 70% を下回ると、次のバッチはページされます。このモデルでは、メッセージが消費されるメモリ使用量が 2 つの範囲内を戻ってくるのが分かります。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments