跳至內容

如何在 Amazon ECS 中將記憶體配置給任務?

3 分的閱讀內容
0

我想要使用 Amazon Elastic Container Service (Amazon ECS) 將記憶體配置給任務。

簡短描述

在 Amazon ECS 中,您可以在 2 個任務定義中定義任務的記憶體:

Amazon ECS 會根據您使用的是 memoryReservation 還是 memory 參數,計算服務記憶體使用率指標。如需詳細資訊,請參閱服務層級 CPU 和記憶體使用率

在下表中,您可以查看為 Amazon Elastic Compute Cloud (Amazon EC2) 和 AWS Fargate 啟動類型設定的最小選項:

無任務大小的任務具有任務大小的任務
任務 CPU選用組態必要組態
任務記憶體選用組態必要組態
容器 CPU選用組態選用組態
容器記憶體必要組態選用組態
啟動類型相容性僅限 EC2EC2 和 Fargate

對於沒有任務大小的任務,必須為該任務設定容器記憶體。您只能將這些任務用於 Amazon EC2 啟動類型。對於具有已定義任務大小的任務,您可以將這些任務用於 Amazon EC2 或 AWS Fargate 啟動類型。然後,設定任務記憶體和 CPU。如需詳細資訊,請參閱 Fargate 啟動類型的 Amazon ECS 任務定義參數

解決方法

檢查容器記憶體分配

請完成下列步驟:

  1. 開啟 Amazon ECS console (Amazon ECS 主控台)。
  2. 在導覽窗格中,選擇 Clusters (叢集),然後選取您的叢集。
  3. 在叢集詳細資訊頁面上,選擇 Infrastructure (基礎架構)。
  4. Container instances (容器執行個體)下,選取已註冊到叢集的容器執行個體 ID。
  5. Resources and networking (資源和網路) 下,查看 Memory (記憶體) 詳細資訊。

memory (記憶體) 參數提供以下叢集詳細資訊:

  • 呼叫 RegisterContainerInstance API 時可用的記憶體總容量
  • 已使用且分配給在執行個體上執行的 ECS 任務的記憶體
  • 可分配給新任務的可用記憶體

**注意:**如需執行個體資源使用情況的統計資料,請使用 SSH 或 SSM 連線到執行個體。然後,執行 docker stats 命令。如需詳細資訊,請參閱 Docker 網站上的 Docker 容器統計資料

對於 EC2 啟動類型,您必須知道容器執行個體上的可用記憶體,才能在任務定義中正確指定記憶體。如果任務定義中指定的記憶體大於註冊執行個體上可用的記憶體,則任務失敗。

使用 Amazon ECS 主控台 JSON 編輯器

若要建立 Amazon ECS 任務定義並為任務指派記憶體,您可以使用 Amazon ECS 主控台 JSON 編輯器。如需詳細資訊,請參閱程序

使用 Amazon ECS 主控台

若要使用 Amazon ECS 主控台為任務分配記憶體,請完成下列其中一項任務。

建立具有軟性限制 (memoryReservation) 的任務定義

請完成下列步驟:

  1. 開啟 Amazon ECS console (Amazon ECS 主控台)。
  2. 在導覽窗格中選擇 Task Definition (任務定義),然後選擇 Create new task definition (建立新任務定義)。
  3. Create task definition (建立任務定義) 畫面上,輸入以下資訊:
    Task definition family name (任務定義系列名稱) 中,輸入您任務的名稱。
    Launch type (啟動類型) 中,選擇 Amazon EC2 執行個體
    Container (容器) 區段下的 Container details (容器詳細資訊) 中,輸入容器的名稱和映像檔 URI。
    Resource allocation limits (資源分配限制) 中,輸入 Memory soft limit (記憶體軟性限制) 的值。然後,選擇 Create (建立)。
    **注意:**記憶體軟性限制對應到 memoryReservation 參數。

建立具有硬性限制 (記憶體) 的任務定義

請完成下列步驟:

  1. 開啟 Amazon ECS console (Amazon ECS 主控台)。
  2. 在導覽窗格中選擇 Task Definition (任務定義),然後選擇 Create new task definition (建立新任務定義)。
  3. Create task definition (建立任務定義) 畫面上,輸入以下資訊:
    Task definition family name (任務定義系列名稱) 中,輸入您任務的名稱。
    Launch type (啟動類型) 中,選擇 Amazon EC2 執行個體
    Container (容器) 區段下的 Container details (容器詳細資訊) 中,輸入容器的名稱和映像檔 URI。
    Resource allocation limits (資源分配限制) 中,輸入 Memory hard limit (記憶體硬性限制) 的值。然後,選擇 Create (建立)。
    **注意:**記憶體硬性限制對應到 memory 參數。

檢查容器的記憶體分配

請完成下列步驟:

  1. 開啟 Amazon ECS console (Amazon ECS 主控台)。
  2. 在導覽窗格中,選擇 Clusters (叢集),然後選取您的叢集。
  3. Cluster details (叢集詳細資訊) 頁面上,選擇 Infrastructure (基礎架構) 索引標籤。
  4. 選取已註冊到叢集的容器執行個體。
  5. Container instance (容器執行個體) 索引標籤的 Resources (資源) 下,查看 Memory registered (已註冊記憶體) 值。
    注意:當執行中的任務為 0 時,已註冊記憶體值會等於可用記憶體值。

**注意:**如需執行個體資源使用情況的統計資料,請使用 SSH 或 SSM 連線到執行個體。然後,執行 docker stats 命令。如需詳細資訊,請參閱 Docker 網站上的 Docker 容器統計資料

對於作為服務一部分執行的任務,服務記憶體使用率指標會以總記憶體資源的百分比來回報使用情況。這些資源是在任務定義中為該服務指定的。如需詳細資訊,請參閱服務層級 CPU 和記憶體使用率

您也可以使用叢集的 Container Insights 來查看 MemoryUtilized 指標。此指標會顯示任務和容器正在使用的記憶體。

相關資訊

Amazon ECS 如何管理 CPU 和記憶體資源

管理 Amazon ECS 上的容器交換記憶體空間

為 Amazon EC2 啟動類型建立 Amazon ECS 叢集

預留 Amazon ECS Linux 容器執行個體記憶體

Docker 網站上的資源限制

AWS 官方已更新 8 個月前