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

メッセージの生成が遅れるまたは低速である

症状は次のとおりです。

考えられる原因:

考えられる原因: ブローカがバックログされ、メッセージプロデューサの処理速度を低下させることによって対処される。

バックログされたブローカでは、ブローカメモリーにメッセージが蓄積します。物理的送信先メモリー内のメッセージ数またはメッセージのバイト数が設定された制限に達すると、ブローカは指定された制限の動作に従いメモリーリソースを節約しようとします。次の制限の動作により、メッセージプロデューサの処理速度が低下します。

同様に、ブローカ全体のメモリー内 (すべての物理的送信先に対応) のメッセージ数またはメッセージのバイト数が設定済みの制限に達すると、ブローカは最新のメッセージを拒否してメモリーリソースを節約しようとします。また、物理的送信先またはブローカ全体の制限が適切に設定されていないために、システムメモリーの制限に達すると、ブローカはさらに大規模なアクションを実行してメモリーの過負荷を防ぎます。このアクションには、メッセージプロデューサを徐々に減らすことなどがあります。

この問題の原因を確認するには: 設定済みのメッセージ制限が原因でブローカによってメッセージが拒否された場合は、ブローカが次の例外を返します。

JMSException [C4036]: A server error occurred

また、ブローカログに次のエントリを作成します。

[B2011]: Storing of JMS message from IMQconn failed

このメッセージには、到達した制限を示す別のメッセージが続きます。

[B4120]: Cannot store message on destination destName because capacity of maxNumMsgs would be exceeded.

これは、物理的送信先上でメッセージが制限されている場合です。

[B4024]: The maximum number of messages currrently in the system has been exceeded, rejecting message.

これは、ブローカ全体でメッセージが制限されている場合です。

より一般的には、拒否が発生する前に、次のようにメッセージ制限条件を確認します。

問題を解決するには:

考えられる原因: ブローカが持続メッセージをデータストアに保存できない。

ブローカがデータストアにアクセスできないか、または持続メッセージを書き込めない場合は、プロデューシングクライアントがブロックされます。前に述べたとおり、この状態は、送信先またはブローカ全体のメッセージ制限に達したときにも発生します。

この問題の原因を確認するには: ブローカは、データストアに書き込めない場合には、ブローカログに次のエントリのいずれかを作成します。

[B2011]: Storing of JMS message from connectionID failed [B4004]: Failed to persist message messageID

問題を解決するには:

考えられる原因: ブローカによる通知のタイムアウトが短すぎる。

低速な接続または、CPU 使用率が高いかメモリーリソースが不十分なためにブローカの能力が低下したことが原因で、ブローカが持続メッセージの受信を通知するまでに、接続ファクトリの imqAckTimeout 属性値で許容されている以上の時間を必要としている可能性があります。

この問題の原因を確認するには: imqAckTimeout 値を超えると、ブローカは次の例外を返します。

JMSException [C4000]: Packet acknowledge failed

問題を解決するには: imqAckTimeout 接続ファクトリ属性の値を変更します (「信頼性およびフロー制御」を参照)。

考えられる原因: プロデューシングクライアントが JVM 制限に達している。

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

問題を解決するには: JVM を調整します (「Java 仮想マシン (JVM) の調整」を参照)。