

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

# Amazon ECS 服務使用率指標
<a name="service_utilization"></a>

服務使用率指標涵蓋 CPU、記憶體以及 EBS 檔案系統使用率 (當有 EBS 磁碟區連接至任務時)。服務層級指標支援任務託管在 Amazon EC2 執行個體與 Fargate 上的服務。

## 服務層級 CPU 與記憶體使用率
<a name="service-utilization-cpu-memory"></a>

CPU 與記憶體使用率的計算方式為，叢集上屬於某項服務的 Amazon ECS 任務使用之 CPU 與記憶體，相較於該服務的任務定義中所指定的 CPU 與記憶體，所得出的百分比。

在 CloudWatch 中檢視這些指標時，您可以選擇不同的統計量：
+ **平均值**：服務中所有任務的平均使用率。此值使用下面的公式計算得出。
+ **最小值**：服務中資源用量最低的任務使用率。此值表示資源密集型最低的任務所使用的 CPU 或記憶體，相較於任務定義中所指定的數值，所得出的百分比。
+ **最大值**：服務中資源用量最高的任務使用率。此值表示資源密集型最高的任務所使用的 CPU 或記憶體，相較於任務定義中所指定的數值，所得出的百分比。

下列公式說明平均值統計量的計算方式：

```
                                  (Total CPU units used by tasks in service) x 100
Service CPU utilization =  --------------------------------------------------------------
                           (Total CPU units specified in the task definition) x (Number of tasks in the service)
```

```
                                     (Total MiB of memory used by tasks in service x 100)
Service memory utilization =  ------------------------------------------------------------------
                              (Total MiB of memory specified in the task definition)  x (Number of tasks in the service)
```

**注意**  
上述公式僅適用於平均值統計量。最小值與最大值統計量分別代表資源使用率最低與最高的個別任務，而非所有任務的彙總計算值。

Amazon ECS 每 20 秒收集一次指標。Amazon ECS 容器代理程式每分鐘都會計算服務所擁有的每個執行中任務目前所使用的 CPU 單位數量與記憶體量 (MiB)。此資訊會回報給 Amazon ECS。叢集上執行中的服務擁有之所有任務使用的 CPU 和記憶體總量皆會計算，這些數字會以在服務的任務定義中，為服務指定的總資源中所佔的百分比，回報給 CloudWatch。最小值與最大值是在這 20 秒週期內蒐集到的指標最小值與最大值。平均值為 3 個數值的彙總結果。

如果您指定軟性限制 (`memoryReservation`)，則會用以計算保留的記憶體數量。否則，會使用硬性限制 (`memory`)。如需有關硬性與軟性限制的詳細資訊，請參閱[任務大小](task_definition_parameters.md#task_size)。

例如，服務的任務定義為其所有容器指定總共 512 個 CPU 單位和 1,024 MiB 記憶體 (使用硬性限制 `memory` 參數)。服務的所需計數為 1 項執行中的任務，此服務正使用 1 個 `c4.large` 容器執行個體 (總共 2,048 個 CPU 單位和 3,768 MiB 記憶體) 在叢集上執行，且叢集上目前未執行其他任務。雖然任務指定的是 512 CPU 單位，因為其是在具有 2,048 CPU 單位的容器執行個體上唯一的執行中任務，該任務可以使用指定數量 (2,048/512) 多達四次。然而，指定記憶體 1,024 MiB 是硬性限制且不得被超過，因此在此情況下，服務記憶體使用率不得超過 100%。

如果之前的範例使用軟性限制 `memoryReservation` 而非硬性限制 `memory` 參數，則服務的任務如有需要，可以使用超過所指定的 1,024 MiB 記憶體。在這種情況下，服務的記憶體使用率可能超過 100%。

如果您的應用程式短時間記憶體使用率驟升，由於 Amazon ECS 每分鐘會收集多個資料點，然後將這些資料點匯集至傳送到 CloudWatch 的單一資料點，因此您會發現服務記憶體使用率並未增加。

如果此任務在某期間內執行 CPU 密集型工作，並使用所有 2,048 個可用的 CPU 單位和 512 MiB 的記憶體，則服務會報告 400% 的 CPU 使用率和 50% 的記憶體使用率。如果任務閒置並使用 128 個 CPU 單位和 128 MiB 記憶體，則服務會回報 25% 的 CPU 使用率和 12.5% 的記憶體使用率。

**注意**  
在此範例中，只有當 CPU 單位在容器層級定義時，CPU 使用率會超過 100%。若您在任務層級定義 CPU 單位，使用率將不會高於定義的任務層級限制。

## 服務層級 EBS 檔案系統使用率
<a name="service-utilization-ebs"></a>

服務層級 EBS 檔案系統使用率的計算方式為，屬於該服務的任務所使用的 EBS 檔案系統總量，除以為屬於該服務的所有任務配置的 EBS 檔案系統儲存總量。

## 服務 `RUNNING` 任務計數
<a name="cw_running_task_count"></a>

您可以使用 CloudWatch 指標來檢視您服務中 `RUNNING` 狀態的任務數量。例如，您可以為此指標設定 CloudWatch 警示，在服務的執行中之任務數量低於指定值時提醒您。

### Amazon ECS CloudWatch Container Insights 中的服務 `RUNNING` 任務計數
<a name="cw_running_task_count_cwci"></a>

當您使用 Amazon ECS CloudWatch Container Insights 時，每個叢集和每個服務都有一個「正在執行的任務數」(`RunningTaskCount`) 指標。您可以透過以下方式為所有新建立的叢集使用 Container Insights：啟用 `containerInsights` 帳戶設定、在建立叢集時開啟個別叢集的設定，或使用 UpdateClusterSettings API 套用至現有叢集。CloudWatch Container Insights 收集的指標會以自訂指標的方式計費。如需了解有關 CloudWatch 定價的詳細資訊，請參閱 [CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

如要查看此指標，請參閱*《Amazon CloudWatch 使用者指南》*中的 [Amazon ECS Container Insights 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-view-metrics.html)。