You need to enable JavaScript to run this app.
导航

RocketMQ 实例更配场景

最近更新时间2023.11.21 19:52:02

首次发布时间2023.11.17 15:45:26

如果当前使用的消息队列 RocketMQ版指标值超过实例的某项规格限制,实例集群运行负载超过推荐负载上限,可能会触发限流机制。建议您及时关注实例运行的各项规格指标数据,在触发限流前调整实例规格。本文档介绍需要调整实例规格的典型业务场景。

需要升级实例规格的场景

计算规格升配涉及到 RocketMQ 实例计算资源的调整,升级计算规格可以提高实例的吞吐量、降低请求时延。消息队列 RocketMQ版推荐您根据以下指标来判断是否有必要进行计算规格升配。当符合下面任意一类情况时,可以考虑进行规格升配。

实例吞吐量接近规格上限

消息队列 RocketMQ版实例的各个计算规格的 TPS 上限不同,该限制以 4KiB 大小的消息为基准。不同的业务的消息大小可能差异很大,因此不能仅通过 TPS 来判断是否达到吞吐量上限,推荐您使用生产和消费的总带宽流量来整体估算业务流量是否达到实例的吞吐量上限。
推荐您在业务实际使用的总带宽达到实例带宽上限的 85% 时,进行实例升配操作。其中:

  • 实例带宽上限:可根据实例推荐 TPS 上限 × 4KiB 进行估算。
  • 业务实际使用的总带宽:生产流量速率 + 消费流量速率。您可以在 RocketMQ 实例的云监控页签中查看生产流量速率和消费流量速率。详细说明请参考查看监控数据

请求时延增大或失败率增高

随着业务持续增长,当 TPS 增加伴随着生产和消费的请求时延开始显著增加,或者消息生产开始出现因流控限制而失败的情况时,推荐您升配实例。观测方式如下:

  • 观察请求时延变化。建议在实例的云监控页签中查看消息生产P99耗时消息消费P99耗时指标,由于该平均时延和业务消息大小相关,因此可以观察该指标的增长趋势判断是否需要升级实例规格。
  • 观测写入消息失败速率的变化。如果该指标持续为非 0 值,且客户端日志中出现“broker busy, start flow control for a while”时,说明服务端 Broker 达到瓶颈开始流控。

您可以在 RocketMQ 实例的云监控页签中查看消息生产P99耗时、消息消费P99耗时写入消息失败速率。详细说明请参考查看监控数据

考虑业务是否存在波峰

RocketMQ 的应用场景之一就是削峰填谷,当业务存在短时波峰导致以上情况出现,可结合业务对时延的容忍度以及波峰产生时是否有实际影响来选择是否升配实例。

需要扩容存储空间的场景

RocketMQ在磁盘水位达到 75% 时,会触发删除消息回收磁盘空间,此时即使消息没有达到过期时间也会被删除。如果您的业务需要保证消息保留时间,当磁盘水位接近 75% 时,推荐您进行磁盘空间扩容。
对于需要保证消息保留时长的实例,可以通过以下方式预估需要的存储空间:

  • 实例平均生产 TPS × 平均消息大小(单位 GiB) × 消息保留时长(单位秒) × 3(副本数) ÷ 75%(磁盘水位)
  • 实例平均写入流量(单位 GiB) × 消息保留时长(单位秒) × 3(副本数) ÷ 75%(磁盘水位)

说明

  • 计算规格升配涉及后端服务节点数量的变化,推荐您在更配时开启队列自动扩容,后端服务会在更配过程中自动为实例所有的 Topic 在新扩容的服务节点上创建队列,无须再手动配置。
  • 如果您的业务需要保持队列数不变,或 Topic 队列数变化需要业务做适配,则可以关闭队列自动扩容

更配场景的告警策略

为了避免业务流量迅速猛增时,大量消息占满磁盘空间、超过实例规格阈值,触发各种流控限制,推荐您针对部分监控项创建告警策略,监控实例运行状态。创建告警后无需时刻关注实例运行的各项指标,仅需要在触发告警时结合以上场景判断方式决定是否需要升配。
针对升配场景推荐配置的告警策略如下,持续时间可结合业务波峰持续时间经验值设置,建议超过阈值 1 个周期以上时触发告警,详细的配置方式及阈值请参考推荐设置的告警规则

场景

监控指标

说明

计算规格升配

实例生产消费总速率

推荐配置最大值告警,阈值可根据实例吞吐量接近规格上限中推荐的方式估算。

实例生产消费流量速率

推荐配置最大值告警,阈值可根据实例吞吐量接近规格上限中推荐的方式估算

消息生产P99耗时

推荐配置最大值告警,具体耗时和业务消息大小有关,可按照稳态运行时的 2 倍配置阈值。

写入消息失败速率

最大值告警,推荐配置为大于 0 时触发告警。

存储空间扩容

实例磁盘使用率

最大值阈值为 75% 触发,监控值大于阈值并持续一个周期时触发告警。