症状:
メッセージのスループットがときどき低下し、その後通常のパフォーマンスに戻る。
考えられる原因:
考えられる原因: ブローカのメモリーリソースがかなり不足している。
送信先とブローカに制限が適切に設定されなかったため、ブローカはメモリーが過負荷になるのを防ぐためにさらに大規模なアクションを実行します。このため、メッセージのバックログがクリアされるまでは、ブローカの処理がかなり遅くなります。
この問題の原因を確認するには: ブローカのログで、メモリー不足の状態になっていないかどうかを確認します。
[B1089]: In low memory condition, broker is attempting to free up resources
に続き、メモリーの最新の状態と、使用中のメモリーの合計を示すエントリが表示されます。また、JVM ヒープ内の使用可能な空きメモリーも確認します。
imqcmd metrics bkr -m cxn
JVM メモリーの合計値が JVM メモリーの最大値に近くなると、空きメモリーは不足がちになります。
問題を解決するには:
JVM を調整します (「Java 仮想マシン (JVM) の調整」を参照)。
システムスワップスペースを増やします。
考えられる原因: JVM メモリーの再利用 (ガベージコレクション) を実行する。
定期的なメモリー再利用によりシステム全体を一掃し、メモリーを解放します。これが実行されると、すべてのスレッドがブロックされます。より多くのメモリーが解放され、JVM ヒープサイズがより大きくなるほど、メモリー再利用に起因する遅延も長くなります。
この問題の原因を確認するには: コンピュータ上の CPU 使用率を監視します。メモリーが再利用されるとき、CPU 使用率は下がります。
また、次のコマンド行オプションを使用してブローカを起動します。
- vmargs -verbose:gc
標準出力では、メモリー再利用が実行される時間が示されます。
問題を解決するには: 複数の CPU を持つコンピュータでは、メモリー再利用を並行して実行するように設定します。
-XX:+UseParallelGC=true
考えられる原因: JVM は JIT コンパイラを使用してパフォーマンスを高速化させる。
この問題の原因を確認するには: この問題にそれ以外の考えられる原因が関与していないことを確認します。
問題を解決するには: しばらくの間システムを稼働させておくと、パフォーマンスは改善するはずです。