

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

# 設定 Amazon MWAA 工作者自動擴展
<a name="mwaa-autoscaling"></a>

自動擴展機制會自動增加 Apache Airflow 工作者的數量，以回應在 Amazon Managed Workflows for Apache Airflow 環境中執行和排入佇列的任務，並在沒有更多任務排入佇列或執行時處置額外的工作者。本主題說明如何透過指定使用 Amazon MWAA 主控台在環境中執行的 Apache Airflow 工作者數量上限，來設定自動擴展。

**注意**  
Amazon MWAA 使用 Apache Airflow 指標來判斷何時需要額外的 [Celery Executor](https://airflow.apache.org/docs/apache-airflow/stable/executor/celery.html) 工作者，並視需要將 Fargate 工作者的數量增加到 指定的值`max-workers`。當額外的工作者完成工作和工作量減少時，Amazon MWAA 會將其移除，因此會縮減為 設定的值`min-workers`。  
如果工作者在縮減規模時取得新任務，Amazon MWAA 會保留 Fargate 資源，而不會移除工作者。如需詳細資訊，請參閱 [Amazon MWAA 自動擴展的運作方式](#mwaa-autoscaling-how)。

**Topics**
+ [工作者擴展的運作方式](#mwaa-autoscaling-how)
+ [使用 Amazon MWAA 主控台](#mwaa-autoscaling-console)
+ [高效能使用案例範例](#mwaa-autoscaling-high-volume)
+ [對卡在執行中狀態的任務進行故障診斷](#mwaa-autoscaling-stranded)
+ [後續步驟？](#mwaa-autoscaling-next-up)

## 工作者擴展的運作方式
<a name="mwaa-autoscaling-how"></a>

Amazon MWAA 使用 `RunningTasks`和 `QueuedTasks`[指標](access-metrics-cw.md#available-metrics-cw)，其中 *（執行中的任務 \$1 已排入佇列的任務） / [（每個工作者的任務](environment-class.md#environment-class-sizes)) = （必要的工作者）*。如果所需的工作者數量大於目前的工作者數量，Amazon MWAA 會將 Fargate 工作者容器新增至該值，直到 指定的最大值為止`max-workers`。

隨著工作負載減少且 `RunningTasks`和 `QueuedTasks` 指標總和減少，Amazon MWAA 會請求 Fargate 縮減環境的工作者。仍然完成工作的任何工作者在縮減規模期間都會受到保護，直到他們完成工作為止。視工作負載而定，任務可能會在工作者縮減規模時排入佇列。

## 使用 Amazon MWAA 主控台
<a name="mwaa-autoscaling-console"></a>

您可以選擇可在 Amazon MWAA 主控台上同時在環境中執行的工作者數量上限。根據預設，您最多可以指定 25 個值。

**設定工作者數量**

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 選擇**編輯**。

1. 選擇**下一步**。

1. 在**環境類別**窗格中，在**工作者計數上限**中輸入值。

1. 選擇**儲存**。

**注意**  
變更對您的環境生效可能需要幾分鐘的時間。

## 高效能使用案例範例
<a name="mwaa-autoscaling-high-volume"></a>

下一節說明您可用來在 環境中啟用高效能和平行處理的組態類型。

### 內部部署 Apache Airflow
<a name="mwaa-autoscaling-high-volume-aa"></a>

一般而言，在內部部署 Apache Airflow 平台中，您可以在 `airflow.cfg` 檔案中設定任務平行處理、自動擴展和並行設定：
+ `core.parallelism` – 每個排程器可同時執行的任務執行個體數目上限。
+ `core.dag_concurrency` – DAGs（非工作者）。
+ `celery.worker_autoscale` – 可在任何工作者上同時執行的任務數量上限和下限。

例如，如果 `core.parallelism` 設為 `100` 且 `core.dag_concurrency` 設為 `7`，則只有在您有 2 個 DAGs 時，您才能同時執行總共 個`14`任務。有鑑於，即使整體平行處理設定為 （在 中`core.dag_concurrency`)，每個 DAG 都會設定為僅同時執行七個任務 `100`（在 中`core.parallelism`)。

**注意**  
`core.dag_concurrency` Apache Airflow v3 中無法使用 。

### 在 Amazon MWAA 環境中
<a name="mwaa-autoscaling-high-volume-mwaa"></a>

在 Amazon MWAA 環境中，您可以使用 [在 Amazon MWAA 上使用 Apache Airflow 組態選項](configuring-env-variables.md)、 和**工作者計數上限**自動擴展機制[設定 Amazon MWAA 環境類別](environment-class.md)，直接在 Amazon MWAA 主控台上設定這些設定。雖然 `core.dag_concurrency` Amazon MWAA 主控台的 **Apache Airflow 組態選項**無法在下拉式清單中使用，但您可以將它新增為自訂 [Apache Airflow 組態選項](configuring-env-variables.md)。

假設您在建立環境時選擇下列設定：

1. **mw1.small** [環境類別](environment-class.md)，可控制每個工作者預設可執行的並行任務數量上限，以及容器的 vCPU。

1. `10` 工作者**計數上限中的工作者**預設設定。

1. 每個工作者`celery.worker_autoscale``5,5`任務的 [Apache Airflow 組態選項](configuring-env-variables.md)。

這表示您可以在環境中執行 50 個並行任務。任何超過 50 個的任務都會排入佇列，並等待執行中的任務完成。

**執行更多並行任務**。您可以使用下列組態來修改環境，以同時執行更多任務：

1. 根據預設，透過選擇 `mw1.medium`（依預設 10 個並行任務） [環境類別](environment-class.md)，增加每個工作者可執行的並行任務數量上限和容器的 vCPU。

1. 新增 `celery.worker_autoscale`做為 [Apache Airflow 組態選項](configuring-env-variables.md)。

1. 增加**工作者計數上限**。在此範例中，將工作者上限從 增加`10`為 ，使環境可執行的並行任務數量`20`加倍。

**指定最小工作者**。您也可以使用 AWS Command Line Interface () 指定在您環境中執行的 Apache Airflow 工作者數量下限和上限AWS CLI。例如：

```
aws mwaa update-environment --max-workers 10 --min-workers 10 --name YOUR_ENVIRONMENT_NAME
```

若要進一步了解，請參閱 中的 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/mwaa/update-environment.html) 命令 AWS CLI。

## 對卡在執行中狀態的任務進行故障診斷
<a name="mwaa-autoscaling-stranded"></a>

在極少數情況下，Apache Airflow 可能會認為仍有任務仍在執行中。若要解決此問題，您需要清除 Apache Airflow UI 中的分層任務。如需詳細資訊，請參閱[對 Amazon Managed Workflows for Apache Airflow 進行故障診斷](troubleshooting.md)疑難排解主題。

## 後續步驟？
<a name="mwaa-autoscaling-next-up"></a>
+ 進一步了解建議您在 中調整環境效能的最佳實務[Amazon MWAA 上 Apache Airflow 的效能調校](best-practices-tuning.md)。