如何在 Amazon ECS 中为任务分配内存?
上次更新时间:2019 年 11 月 21 日
如何使用 Amazon Elastic Container Service (Amazon ECS) 为任务分配内存?
简短描述
Amazon ECS 使用两个参数为任务分配内存:memoryReservation(软限制)和 memory(硬限制)。任务运行时 Amazon EC2 容器实例的可用内存单元中将减去每个参数的值。根据任务定义中的软限制或硬限制进行计算。有关更多信息,请参阅集群利用率。
注:memory 和 memoryReservation 参数被设置为 Amazon ECS 任务定义的容器定义参数。如果您为容器级别的 memory 和 memoryReservation 分别指定一个值,那么 memory 必须大于 memoryReservation。如果您指定 memoryReservation,则将从容器所在容器实例的可用内存资源减去该值。否则,使用 memory 的值。如需更多信息,见内存。
解决方案
在开始之前,请检查以确认您有包括 Amazon Elastic Compute Cloud (Amazon EC2) 实例的 Amazon ECS 集群。有关创建集群的更多信息,请参阅使用经典控制台创建集群。有关配置集群和容器实例的更多信息,请参阅容器实例内存管理。
查看容器实例的内存分配
- 打开 Amazon ECS 控制台。
- 在导航窗格中,选择 Clusters (集群)。
- 选择由您创建的集群。
- 选择 ECS 实例视图,然后选择您从容器实例列创建的集群所包含的容器实例。
注:详细信息窗格显示可用列的内存等于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
创建具有软限制的任务定义
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions (任务定义)。
- 选择创建新的任务定义。
- 针对启动类型,选择 EC2,然后选择下一步。
- 为任务定义名称输入一个名称。
- 在容器定义部分,选择添加容器。
- 为容器名称输入一个名称。
- 针对映像,输入 nginx 或您的环境的适当 Docker 映像。
- 针对内存限制 (MiB),选择软限制,然后输入 700。
- 选择 Add (添加),然后选择 Create (创建)。
运行具有软限制的任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 选择 Run Task(运行任务)。
注意:Task Definition(任务定义)和 Cluster(集群)预填充有您之前创建的任务定义和集群的名称。 - 如果任务使用软限制,而且它的上次状态列显示为 RUNNING(正在运行),选择导航窗格中的 Clusters(集群)。
注意:要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:详细信息窗格显示可用列的内存小于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
- 选择导航窗格中的集群,然后选择该集群。
- 选择任务视图,选择使用软限制的任务,然后选择停止。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:详细信息窗格显示可用列的内存等于已注册列的内存。
创建使用硬限制的新任务定义修订
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions (任务定义)。
- 选择您创建的使用软限制的任务定义,然后选择创建新修订。
- 在容器定义部分的容器名称列,选择您为使用软限制的任务定义添加的容器。
- 针对内存限制 (MiB),选择硬限制,然后输入 1000。
- 选择 Update (创建),然后选择 Create (创建)。
运行具有硬限制的修订后任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 针对任务定义,选择您创建的使用硬限制的任务定义,然后选择运行任务。
- 如果任务修订使用硬限制,而且它的上次状态列显示为正在运行,选择导航窗格中的集群。
注意:要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:Details(详细信息)窗格显示 Available(可用)列的内存小于 Registered(已注册)列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
- 选择导航窗格中的集群,然后选择该集群。
- 选择任务视图,选择使用硬限制的任务,然后选择停止。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:详细信息窗格显示可用列的内存等于已注册列的内存。
创建同时使用软限制和硬限制的新任务定义修订
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions (任务定义)。
- 选择您创建的使用硬限制的任务定义,然后选择创建新修订。
- 在容器定义部分的容器名称列,选择您为使用硬限制的任务定义添加的容器。
- 针对内存限制 (MiB),选择软限制,然后输入 700。
- 选择添加硬限制,然后输入 1200。
- 选择 Update (创建),然后选择 Create (创建)。
运行具有软限制和硬限制的修订后任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 对于 Task Definition(任务定义),选择您创建的具有软限制和硬限制的任务定义,然后选择 Run Task(运行任务)。
- 当任务的 Last status (最后状态) 列显示为 RUNNING (正在运行) 时,从导航窗格中选择 Clusters (集群)。
注意:要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择导航窗格中的集群,然后选择该集群。
- 选择任务视图,选择同时使用软限制金额硬限制的任务,然后选择停止。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:详细信息窗格显示可用列的内存小于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。