本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 MQ for RabbitMQ 尺码指南
您可以选择最能支持您的应用程序的代理实例类型。在选择实例类型时,重要的是要考虑会影响代理性能的因素:
-
客户机和队列的数量
-
发送的消息量
-
消息保存在内存中
-
冗余消息
建议仅在测试应用程序性能时使用较小的代理实例类型 (t3.micro
)。对于客户端m5.large
和队列的生产级别、高吞吐量、内存中的消息和冗余消息,我们建议使用更大的代理实例类型(及更高版本)。
请务必测试您的代理,以确定适合您的工作负载消息传送要求的实例类型和大小。使用以下规模调整指南来确定最适合您的应用程序的实例类型。
单实例部署的大小指南
下表显示了单实例代理每种实例类型的最大限制值。
实例类型 | 连接 | 渠道 | 队列 | 每个渠道的消费者 | 铲子 |
---|---|---|---|---|---|
t3.micro | 500 | 1500 | 2,500 | 1000 | 150 |
m5.large | 5000 | 15000 | 30000 | 1000 | 250 |
m5.xlarge | 10000 | 30000 | 60000 | 1000 | 500 |
m5.2xlarge | 20000 | 60000 | 120,000 | 1000 | 1000 |
m5.4xlarge | 40000 | 120,000 | 240,000 | 1000 | 2000 |
集群部署的大小指南
下表显示了集群代理每种实例类型的最大限制值。
实例类型 | 队列 | 每个渠道的消费者 |
---|---|---|
m5.large | 10000 | 1000 |
m5.xlarge | 15000 | 1000 |
m5.2xlarge | 20000 | 1000 |
m5.4xlarge | 30000 | 1000 |
以下连接、通道和铲子限制适用于每个节点。
实例类型 | 连接 | 渠道 | 铲子 |
---|---|---|---|
m5.large | 500 | 15000 | 50 |
m5.xlarge | 10000 | 30000 | 100 |
m5.2xlarge | 20000 | 60000 | 200 |
m5.4xlarge | 40000 | 120,000 | 400 |
集群代理的确切限制值可能低于指定值,具体取决于可用节点的数量以及 RabbitMQ 在可用节点之间分配资源的方式。如果超过限制值,则可以创建与其他节点的新连接并重试,也可以升级实例大小以增加最大限制
错误消息
超过限制时会返回以下错误消息。所有值均基于m5.large
单实例限制。
注意
以下消息的错误代码可能会根据您使用的客户端库而变化。
Connection
ConnectionClosedByBroker 500 "NOT_ALLOWED - connection refused: node connection limit (500) is reached"
Channel
ConnectionClosedByBroker 1500 "NOT_ALLOWED - number of channels opened on node
'rabbit@ip-10-0-23-173.us-west-2.compute.internal' has reached the maximum allowed limit of (15,000)"
消费者
ConnectionClosedByBroker: (530, 'NOT_ALLOWED - reached maximum (1,000) of consumers per channel')
注意
以下错误消息使用HTTP管理API格式。
队列
{"error":"bad_request","reason":"cannot declare queue 'my_queue': queue limit in cluster (30,000) is reached"}]
铲子
{"error":"bad_request","reason":"Validation failed\n\ncomponent shovel is limited to 250 per node\n"}
虚拟主机
{"error":"bad_request","reason":"cannot create vhost 'my_vhost': vhost limit of 4,000 is reached"}