

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 資源限制組態
<a name="configure-resource-limits"></a>

Amazon MQ for RabbitMQ 支援從 RabbitMQ 4 之後設定代理程式資源限制。當您建立代理程式時，Amazon MQ 會自動將預設值套用至這些資源限制。這些預設值可做為護欄，保護您的代理程式可用性，同時適應常見的客戶使用模式。您可以透過變更限制組態值來自訂代理程式行為，以更符合您的特定工作負載需求。如需預設和最大允許值的詳細資訊，請參閱 [Amazon MQ for RabbitMQ 大小調整準則](rabbitmq-sizing-guidelines.md)。

## 資源名稱和組態金鑰
<a name="resource-limit-configuration-keys"></a>


| 資源名稱 | 組態金鑰 | 
| --- | --- | 
| 連線 | connection\_max | 
| Channel | channel\_max\_per\_node | 
| 佇列 | cluster\_queue\_limit | 
| Vhost | vhost\_max | 
| 雪鏟 | runtime\_parameters.limits.shovel | 
| Exchange | cluster\_exchange\_limit | 
| 每個頻道的消費者數 | consumer\_max\_per\_channel | 
| 訊息大小上限 | max\_message\_size | 

## 如何覆寫資源限制
<a name="override-resource-limits"></a>

您可以使用 Amazon MQ API 和 Amazon MQ 主控台覆寫資源限制。

下列範例顯示如何使用 覆寫佇列計數預設限制 AWS CLI：

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

成功的調用會建立組態修訂。您必須將組態與 RabbitMQ 代理程式建立關聯，然後重新啟動代理程式以套用覆寫。如需詳細資訊，請參閱 [RabbitMQ Broker Configurations](rabbitmq-broker-configuration-parameters.md) 

## 組態中的執行個體特定區段支援
<a name="section-support-configuration-data"></a>

透過 RabbitMQ 4，Amazon 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_max`至 `2000`：

```
connection_max = 1000

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

反轉順序`connection_max`設定為 `1000`，因為一般值是最後的：

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

connection_max = 1000
```

**注意**  
如果組態資料未定義特定執行個體類型的值，Amazon MQ 會套用預設值。

**範例**

下列範例示範如何使用 建立具有區段的組態，並將其與代理程式建立關聯 AWS 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 = 1000`和 `channel_max_per_node = 64`
+ `m7g.large` 叢集代理程式： `connection_max = 2000`和 `channel_max_per_node = 128`
+ `m7g.xlarge` 叢集代理程式： `connection_max = 4000`和 `channel_max_per_node = 256`

*將組態與代理程式建立關聯*

更新組態後，請將其與您的代理程式建立關聯，然後重新啟動代理程式以套用變更。執行以下命令：

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

## 資源限制覆寫錯誤
<a name="resource-limit-override-errors"></a>

將代理程式與受支援範圍以外的組態值建立關聯或建立代理程式會導致類似以下的錯誤回應：

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

如需執行個體類型和部署模式的預設值和支援範圍上限，請參閱 [預設資源限制](rabbitmq-resource-limits-configuration.md)和 [Amazon MQ for RabbitMQ 資源上限](rabbitmq-resource-hard-limit.md)。