确定 Amazon ECS 的任务大小 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

确定 Amazon ECS 的任务大小

在 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 会停止容器。

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

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

无状态应用程序

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

为此,您可以使用传统工具,例如 pstop。您还可以使用 CloudWatch Container Insights 等监控解决方案。

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

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

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

其他客户端应用程序

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

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