

# 确定 Amazon ECS 的任务大小
<a name="capacity-tasksize-best-practice"></a>

在 Amazon ECS 上部署容器时，要做的最重要的选择之一就是容器和任务大小。容器和任务大小对于扩缩和容量规划都至关重要。

Amazon ECS 使用两个资源指标来测量容量：CPU 和内存。Amazon ECS 以整个 vCPU 的 1/1024 为单位来测量 CPU（其中 1024 个单位等于一整个 vCPU）。Amazon ECS 以兆字节为单位测量内存。

在任务定义中，您可以声明资源预留和限制。

当您声明预留时，您就是在声明任务所需的最低资源量。您的任务至少会收到所请求的资源量。您的应用程序可能能够使用比您声明的预留更多的 CPU 或内存。但是，这受制于您所声明的任何限制。

使用超过预留量被称为突增。爆增意味着应用程序使用的资源多于预留的资源，但仍保持在您声明的限制范围内。Amazon ECS 保证预留。例如，如果您使用 Amazon EC2 实例来提供容量，则 Amazon ECS 不会将任务放置在无法完成预留的实例上。

限制是指您的容器或任务可以使用的最大 CPU 单位量或内存量。如果您的容器尝试使用超过此限制的 CPU，Amazon ECS 会对其进行节流。如果您的容器尝试使用超过此限制的内存，Amazon ECS 会停止容器。

选择这些值可能会具有挑战性。最适合您的应用程序的值在很大程度上取决于应用程序的资源需求。

对应用程序进行负载测试是成功规划资源需求的关键。负载测试可帮助您更好地了解应用程序的需求。

## 无状态应用程序
<a name="capacity-tasksize-stateless"></a>

对于水平扩缩的无状态应用程序，例如负载均衡器后面的应用程序，建议您首先确定应用程序在提供请求时消耗的内存量。

为此，您可以使用传统工具，例如 `ps` 或 `top`。您还可以使用 CloudWatch Container Insights 等监控解决方案。

在确定 CPU 预留时，请考虑如何扩缩应用程序以满足您的业务需求。

您可以使用较小的 CPU 预留（例如 256 个 CPU 单元（或 1/4 vCPU），以细粒度的方式进行横向扩展，从而最大限度地降低成本。但是，它们的扩缩速度可能不够快，无法满足需求的显著激增。

您可以使用更大的 CPU 预留来更快地横向缩减和横向扩展。这有助于您更快地匹配需求激增。但是，预留的 CPU 越大，成本就越高。

## 其他客户端应用程序
<a name="capacity-tasksize-other"></a>

对于无法横向扩缩的应用程序（例如单例 Worker 或数据库服务器），可用容量和成本是您最重要的考虑因素。

根据负载测试所示的提供流量和满足服务级别目标所需的配置，选择内存量和 CPU 数量。Amazon ECS 可确保将应用程序放置在具有足够容量的主机上。