第6章 問題についてのブローカーの監視

AMQ Broker には、デッドロック状態などの問題についてブローカーをアクティブに監視する Critical Analyzer と呼ばれる内部ツールが含まれています。実稼働環境では、IO エラー、不具合のあるディスク、メモリー不足、または他のプロセスによって発生する CPU 使用率など、デッドロック状態などの問題が発生することがあります。

Critical Analyzer は、キュー配信(ブローカーのキューへの追加)やジャーナル操作などの重要な操作の応答時間を定期的に測定します。チェックされた操作の応答時間が設定可能なタイムアウト値を超えると、ブローカーは不安定とみなされます。この場合、Critical Analyzer を設定して、ブローカーをシャットダウンするか、ブローカーを実行している仮想マシンの停止など、ブローカーを保護するアクションを実行できます。

6.1. Critical Analyzer の設定

以下の手順は、問題がないかブローカーを監視するように Critical Analyzer を設定する方法を示しています。

手順

  1. <broker-instance-dir>/etc/broker.xml 設定ファイルを開きます。

    Critical Analyzer のデフォルト設定を以下に示します。

    <critical-analyzer>true</critical-analyzer>
    <critical-analyzer-timeout>120000</critical-analyzer-timeout>
    <critical-analyzer-check-period>60000</critical-analyzer-check-period>
    <critical-analyzer-policy>HALT</critical-analyzer-policy>
  2. 以下に示すように、パラメーター値を指定します。

    critical-analyzer
    Critical Analyzer ツールを有効または無効にするかどうかを指定します。デフォルト値は true です。これは、ツールが有効であることを意味します。
    critical-analyzer-timeout
    Critical Analyzer によるチェックのタイムアウト(ミリ秒単位)。チェックされた操作のいずれかでかかった時間がこの値を超えると、ブローカーは不安定とみなされます。
    critical-analyzer-check-period
    各オペレーションの Critical Analyzer による連続チェックの間隔(ミリ秒単位)。
    critical-analyzer-policy
    ブローカーがチェックに失敗し、不安定であるとみなされる場合、このパラメーターは、ブローカーがメッセージをログに記録するか (LOG)、ブローカーをホストする仮想マシンを停止するか (HALT)、ブローカーをシャットダウン (SHUTDOWN) します。

    設定したポリシーオプションに基づいて、重要な操作の応答時間が設定されたタイムアウト値を超えると、以下のような出力が表示されます。

    critical-analyzer-policy=LOG

    [Artemis Critical Analyzer] 18:11:52,145 WARN [org.apache.activemq.artemis.core.server] AMQ224081: The component org.apache.activemq.artemis.tests.integration.critical.CriticalSimpleTest$2@5af97850 is not responsive

    critical-analyzer-policy=HALT

    [Artemis Critical Analyzer] 18:10:00,831 ERROR [org.apache.activemq.artemis.core.server] AMQ224079: The process for the virtual machine will be killed, as component org.apache.activemq.artemis.tests.integration.critical.CriticalSimpleTest$2@5af97850 is not responsive

    critical-analyzer-policy=SHUTDOWN

    [Artemis Critical Analyzer] 18:07:53,475 ERROR [org.apache.activemq.artemis.core.server] AMQ224080: The server process will now be stopped, as component org.apache.activemq.artemis.tests.integration.critical.CriticalSimpleTest$2@5af97850 is not responsive

    また、以下のようなブローカーにスレッドダンプが表示されます。

    [Artemis Critical Analyzer] 18:10:00,836 WARN  [org.apache.activemq.artemis.core.server] AMQ222199: Thread dump: AMQ119001: Generating thread dump
    * =============================================================================== AMQ119002: Thread Thread[Thread-1 (ActiveMQ-scheduled-threads),5,main] name = Thread-1 (ActiveMQ-scheduled-threads) id = 19 group = java.lang.ThreadGroup[name=main,maxpri=10] sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745) =============================================================================== ..... .......... =============================================================================== AMQ119003: End Thread dump *

改訂日時: 2022-03-19 15:53:01 +1000