View a markdown version of this page

资源限制配置 - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

资源限制配置

适用于 RabbitMQ 的亚马逊 MQ 支持从 RabbitMQ 4 开始配置代理资源限制。当您创建代理时,Amazon MQ 会自动将默认值应用于这些资源限制。这些默认值充当保护您的经纪商可用性的护栏,同时适应常见的客户使用模式。您可以通过更改限制配置值来自定义您的代理行为,以更好地满足您的特定工作负载要求。有关默认值和最大允许值的更多详细信息,请参阅Amazon MQ for RabbitMQ 大小调整指南

资源名称和配置密钥

资源名称 配置密钥
Connection connection_max
频道 channel_max_per_node
队列 cluster_queue_limit
Vhost vhost_max
Shovel runtime_parameters.limits.shovel
Exchange cluster_exchange_limit
每个渠道的消费者 consumer_max_per_channel
最大消息大小 max_message_size

如何覆盖资源限制

您可以使用亚马逊 MQ API 和亚马逊 MQ 控制台来覆盖资源限制。

以下示例说明如何使用以下方法覆盖队列计数的默认限制 Amazon CLI:

aws mq update-configuration --configuration-id <config-id> --data "$(echo "cluster_queue_limit=500" | base64 --wrap=0)"

成功调用会创建配置修订版。您必须将配置与您的 RabbitMQ 代理关联并重新启动代理才能应用覆盖。欲了解更多详情,请参阅 RabbitMQ Broker Configurations

配置中支持特定于实例的部分

在 RabbitMQ 4 中,亚马逊 MQ 支持配置数据中的章节。部分允许您在单个配置中定义特定于实例的资源限制。每个部分对应于特定的实例类型和部署模式组合。当您将配置与代理关联时,Amazon MQ 会自动为代理的实例类型和部署模式应用匹配部分。

重要

分区支持仅在 RabbitMQ 4 上可用。如果您尝试将包含部分的配置应用于 RabbitMQ 3 代理,API 会返回。BadRequestException

章节语法

各节由双花括号分隔,格式如下:

{{<host-instance-family>.<size>.<mode>}}

mode值表示部署模式:

  • 1— 单实例代理

  • 3— 集群代理

任何其他模式值均无效,并且 API 会返回错误。

以下示例显示了两种不同实例类型的配置数据,其中包含两个不同实例类型的部分:

connection_max = 1000 {{m7g.large.3}} connection_max = 2000 {{m7g.large.3}} {{m7g.xlarge.3}} connection_max = 4000 {{m7g.xlarge.3}}

分区中允许的配置密钥

分区内仅支持以下资源限制配置密钥。在分区内添加任何其他配置密钥都会导致 API 错误。

  • max_message_size

  • channel_max_per_node

  • connection_max

  • cluster_queue_limit

  • vhost_max

  • consumer_max_per_channel

  • runtime_parameters.limits.shovel

  • cluster_exchange_limit

章节优先规则

当配置密钥同时出现在通用(顶级)部分和实例特定部分时,配置数据中稍后出现的值优先。例如,将以下配置应用于m7g.large集群代理将设置connection_max2000

connection_max = 1000 {{m7g.large.3}} connection_max = 2000 {{m7g.large.3}}

反向顺序设置connection_max1000,因为通用值排在最后:

{{m7g.large.3}} connection_max = 2000 {{m7g.large.3}} connection_max = 1000
注意

如果配置数据未定义特定实例类型的值,则 Amazon MQ 将应用默认值。

示例

以下示例说明如何使用部分创建配置并使用将其与代理关联 Amazon CLI。

使用分区更新配置

运行以下命令以针对多种实例类型更新具有特定实例资源限制的配置:

aws mq update-configuration \ --configuration-id <config-id> \ --data "$(echo -e "connection_max = 1000\nchannel_max_per_node = 64\n\n{{m7g.large.3}}\nconnection_max = 2000\nchannel_max_per_node = 128\n{{m7g.large.3}}\n\n{{m7g.xlarge.3}}\nconnection_max = 4000\nchannel_max_per_node = 256\n{{m7g.xlarge.3}}" | base64 --wrap=0)"

此配置定义了以下值:

  • 通用默认值:connection_max = 1000channel_max_per_node = 64

  • m7g.large集群代理:connection_max = 2000channel_max_per_node = 128

  • m7g.xlarge集群代理:connection_max = 4000channel_max_per_node = 256

将配置与代理关联

更新配置后,将其与您的代理关联并重新启动代理以应用更改。运行如下命令:

aws mq update-broker \ --broker-id <broker-id> \ --configuration id=<config-id>,revision=<revision-number>

资源限制覆盖错误

将配置值超出支持范围的代理关联或创建代理会导致类似于以下内容的错误响应:

Configuration Revision N for configuration:cluster_queue_limit has limit: of value: 100000000 larger than maximum allowed limit:5000

有关按实例类型和部署模式划分的默认值和最大支持范围,请参阅默认资源限制适用于 RabbitMQ 的亚马逊 MQ 资源上限上限