View a markdown version of this page

Amazon MQ 上的 RabbitMQ:磁盘限制警报 - Amazon MQ

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon MQ 上的 RabbitMQ:磁盘限制警报

磁盘限制警报表明,由于添加新消息时未消耗大量消息,RabbitMQ 节点使用的磁盘量有所减少。当经纪商的可用磁盘空间(由亚马逊 CloudWatch 指标RabbitMQDiskFree确定)达到磁盘限制时,RabbitMQ 将发出磁盘限制警报。RabbitMQDiskFreeLimitRabbitMQDiskFreeLimit由 Amazon MQ 设置,在定义时考虑了每种代理实例类型的可用磁盘空间。有关更多信息,请参阅 内存和磁盘警报。

引发磁盘限制警报的 Amazon MQ for RabbitMQ 代理将无法发布新消息。如果发布者和使用者处于同一连接上,则使用者也将无法接收消息。在集群中运行 RabbitMQ 时,磁盘警报是集群范围的。如果一个节点变得低于限制,则所有其他节点都将阻止传入的消息。由于缺少磁盘空间,代理可能还会遇到其他使警报诊断和解决复杂化的问题。

Amazon MQ 在遇到磁盘警报时不会重新启动代理,并且将会在该代理继续引发警报时返回 RebootBroker API 操作异常。

注意

您不能将代理从 mq.m5 实例类型降级为 mq.t3.micro 实例类型。如果您想降级,则必须删除代理并创建新的代理。

诊断和解决磁盘限制警报

默认情况下,Amazon MQ 将会为您的代理启用指标。您可以通过访问亚马逊 CloudWatch 控制台或使用 CloudWatch API 来查看您的经纪人指标。MessageCount是诊断 RabbitMQ 磁盘限制警报时的有用指标。消息在被使用或丢弃之前一直存储在内存中。高消息计数表示磁盘存储空间过度使用,而可能导致磁盘警报。

要诊断磁盘限制警报,请使用 Amazon MQ 管理控制台执行以下操作:

  • 创建新连接以使用发布到队列的消息。

  • 清除队列中的消息。

  • 删除代理中的队列。

注意

在您采取必要的操作后,RABBITMQ_DISK_ALARM 状态可能需要几个小时才能清除。

为防止磁盘限制警报再次发生,您可以将主机实例类型升级为具有其他资源的实例。有关如何更新代理的实例类型的信息,请参阅《Amazon MQ REST API 参考》中的 UpdateBrokerInput。我们还建议让发布者和使用者使用不同的连接。

通过增加可配置存储来缓解磁盘限制警报

您还可以通过增加代理的可配置 EBS 存储大小来缓解磁盘限制警报。当您当前的 EBS 容量低于您的实例类型的最大允许存储空间时,此选项可用。在继续操作之前,适用于 RabbitMQ 的亚马逊 MQ 的可配置存储最佳实践请查看以了解支持的存储范围。

要增加可配置存储,请应用更新并重新启动代理。由于磁盘使用警报导致代理处于需要执行的关键操作状态,因此 RabbitMQ 不会重启。Amazon MQ 应用存储空间增加量,磁盘使用警报清除后,代理退出需要执行的关键操作状态。

注意

当代理由于磁盘使用情况警报而处于需要采取关键操作的状态时,只允许增加可配置的存储空间。在代理退出警报状态之前,您无法更改代理的实例类型。

更新后,监控RabbitMQDiskFree和RabbitMQDiskFreeLimit亚马逊 CloudWatch 指标以确认经纪人退出警报状态。为防止磁盘警报事件再次发生,请监控一段时间内的磁盘使用情况,并按照中的Amazon MQ for RabbitMQ 最佳实践指导进行操作。如果需要额外的磁盘或其他资源容量,也可以考虑升级代理的实例类型。