搜索

第 7 章 监控问题的代理

download PDF

AMQ Broker 包括一个称为 Critical Analyzer 的内部工具,它主动监控运行代理中的问题,如死锁条件。在生产环境中,死锁条件等问题可能是 IO 错误、缺陷的磁盘、内存短缺或受其他进程导致的 CPU 使用率。

Critical Analyzer 会定期测量关键操作的响应时间,如队列交付(即,将消息添加到代理上的队列)和日志操作。如果检查操作的响应时间超过可配置的超时值,代理被视为不稳定。在这种情况下,您可以将 Critical Analyzer 配置为只记录消息或采取措施来保护代理,如关闭代理或停止运行代理的虚拟机(VM)。

7.1. 配置关键分析器

以下流程演示了如何配置关键分析器来监控代理中的问题。

流程

  1. 打开 & lt;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-check-period
    对于每个操作,在 Critical Analyzer 连续检查之间的时间周期(以毫秒为单位)。
    critical-analyzer-policy
    如果代理无法检查并被视为不稳定,则此参数指定代理是否记录消息(LOG)、停止托管代理(HALT)或关闭代理(SHUTDOWN)的虚拟机(VM)。

根据您配置的策略选项,如果关键操作的响应时间超过配置的超时值,您会看到类似如下的输出:

critical-analyzer-policy=LOG

[Artemis Critical Analyzer] 18:11:52,145 ERROR [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 ERROR  [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 *

更新于 2024-05-21

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.