Sun Java System Message Queue 3.7 UR1 管理ガイド

メッセージがバックログされる

症状:

メッセージが蓄積されているかどうかを確認するため、ブローカ内のメッセージ数またはメッセージのバイト数が時間の経過とともにどのように変化するかを確認し、設定済みの制限と比較します。最初に、設定済みの制限を確認します。

imqcmd query bkr


注 –

imqcmd metrics bkr サブコマンドは、この情報を表示しません。


その後、各送信先でのメッセージの蓄積を確認します。

imqcmd list dst

メッセージが設定済みの送信先またはブローカ全体の制限を超えているかどうかを判断するため、ブローカログで次のエントリを確認します。

[B2011]: Storing of JMS message from failed.

このエントリには、超過した制限について示す別のエントリが続きます。

考えられる原因:

考えられる原因: トピック送信先に非アクティブな永続サブスクリプションがある。

永続サブスクリプションが非アクティブな場合は、該当するコンシューマがアクティブになりメッセージを消費できるようになるまで、メッセージは送信先に格納されます。

この問題の原因を確認するには: 各トピック送信先の永続サブスクリプションの状態を確認します。

imqcmd list dur -d destName

問題を解決するには:

考えられる原因: キュー内のメッセージを消費するための使用可能なコンシューマが少なすぎる。

メッセージを配信可能なアクティブなコンシューマが少なすぎる場合は、メッセージが蓄積するにつれ、キュー送信先がバックログされる恐れがあります。この状態は、次の理由のどれかが原因で発生することがあります。

この問題の原因を確認するには: コンシューマが使用できない理由を判断するために、送信先のアクティブなコンシューマの数を確認します。

imqcmd metrics dst - n destName -t q -m con

問題を解決するには: コンシューマが使用できない理由に応じて、次のいずれかを実行します。

考えられる原因: メッセージプロデューサの処理速度についていくには、メッセージコンシューマの処理速度が遅すぎる。

この場合、トピックのサブスクライバまたはキューの受信側は、プロデューサがメッセージを送信する速度より遅い速度でメッセージを消費しています。この不均衡が原因で、複数の送信先にメッセージがバックログされています。

この問題の原因を確認するには: ブローカとの間のメッセージのフローレートを確認します。

imqcmd metrics bkr -m rts

その後、個々の送信先についてそれぞれのフローレートを確認します。

imqcmd metrics bkr -t destType -n destName - m rts

問題を解決するには:

考えられる原因: クライアントの通知処理が、メッセージの消費を遅くする。

クライアントの通知処理には 2 つの要因が影響しています。

この問題の原因を確認するには:

問題を解決するには:

考えられる原因: 生成されたメッセージの処理にブローカが追いつけない。

この場合、ブローカがメッセージをコンシューマにルーティングおよび配信可能な速度より速く、ブローカにメッセージが流入しています。ブローカの遅滞は、次のどれかまたはすべてにおける制限が原因と考えられます。

この問題の原因を確認するには: この問題にそれ以外の考えられる原因が関与していないことを確認します。

問題を解決するには:

考えられる原因: クライアントコードの欠陥: コンシューマがメッセージを通知していない。

メッセージは、すべてのコンシューマによってメッセージの送信先へ通知されるまで、送信先で保持されます。クライアントが消費したメッセージを通知しない場合、メッセージは削除されずに送信先で蓄積されます。

たとえば、クライアントコードは次の欠陥を持っている可能性があります。

この問題の原因を確認するには: この節で挙げられている、その他すべての考えられる原因を確認します。次に、以下のコマンドを使用し、送信先を一覧表示します。

imqcmd list dst

ヘッダー「UnAcked」の下に一覧表示されるメッセージの数が、送信先のメッセージの数と同じであるかどうか確認してください。このヘッダーの下のメッセージはコンシューマに送信されますが、通知されません。この数がメッセージの総数と同じである場合、ブローカはすべてのメッセージを送信し、通知を待機しています。

問題を解決するには: アプリケーション開発者にこの問題をデバッグしてもらうように依頼します。