

# Amazon ECS 任务大小的最佳实践
<a name="capacity-tasksize"></a>

 容器和任务大小对于扩展和容量计划都至关重要。在 Amazon ECS 中，CPU 和内存这两个资源指标用于测量容量。CPU 以整个 vCPU 的 1/1024 为单位测量（其中 1024 个单位等于一整个 vCPU）。内存以兆字节为单位衡量。在任务定义中，您可以配置资源预留和限制。

配置预留时，就是在设置任务所需的最低资源量。您的任务至少会收到所请求的资源量。您的应用程序可能能够使用比您声明的预留更多的 CPU 或内存。但是，这受制于您所声明的任何限制。使用超过预留量被称为突增。在 Amazon ECS 中，保证预留。例如，如果您使用 Amazon EC2 实例来提供容量，则 Amazon ECS 不会将任务放置在无法完成预留的实例上。

限制是指您的容器或任务可以使用的最大 CPU 单位量或内存量。任何使用超过此限制的 CPU 数量的尝试都会导致节流。任何使用更多内存的尝试都会导致您的容器停止。

选择这些值可能会具有挑战性。这是因为最适合您的应用程序的值在很大程度上取决于应用程序的资源需求。对应用程序进行负载测试是成功计划资源需求和更好地了解应用程序需求的关键。

## 无状态应用程序
<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>

对于无法横向扩展的应用程序（例如单例工作线程或数据库服务器），可用容量和成本是您最重要的考虑因素。您应该根据负载测试表明需要提供的流量来选择内存和 CPU 的数量，以满足您的服务级别目标。Amazon ECS 可确保将应用程序放置在具有足够容量的主机上。