如何在 Amazon ECS 中为任务分配内存?

上次更新时间:2019 年 11 月 21 日

如何使用 Amazon Elastic Container Service (Amazon ECS) 为任务分配内存?

简短描述

Amazon ECS 使用两个参数为任务分配内存:memoryReservation(软限制)和 memory(硬限制)。任务运行时 Amazon EC2 容器实例的可用内存单元中将减去每个参数的值。计算将基于任务定义的软限制或硬限制。如需更多信息,见集群利用率

注:memorymemoryReservation 参数被设置为 Amazon EC2 任务定义的容器定义参数。如果您为容器级别的 memorymemoryReservation 分别指定一个值,那么 memory 必须大于 memoryReservation。如果您指定 memoryReservation,则将从容器所在容器实例的可用内存资源减去该值。否则,使用 memory 的值。如需更多信息,见内存

解决方法

在开始前,检查并确定您是否有包含 Amazon Elastic Compute Cloud (Amazon EC2) 实例的 Amazon ECS 集群。如需关于创建集群的更多信息,见创建集群。如需关于配置集群和容器实例的更多信息,容器实例内存管理

查看容器实例的内存分配

  1. 打开 Amazon ECS 控制台
  2. 在导航窗格中,选择集群
  3. 选择由您创建的集群。
  4. 选择 ECS 实例视图,然后选择您从容器实例列创建的集群所包含的容器实例。
    注:详细信息窗格显示可用列的内存等于已注册列的内存。
  5. 如需关于实例资源利用率的统计数据,使用 SSH 连接至实例,然后运行 docker stats 命令。

创建使用软限制的任务定义

  1. Amazon ECS 控制台的导航窗格中,选择任务定义
  2. 选择创建新的任务定义
  3. 针对启动类型,选择 EC2,然后选择下一步
  4. 任务定义名称输入一个名称。
  5. 容器定义部分,选择添加容器
  6. 容器名称输入一个名称。
  7. 针对映像,输入 nginx 或您的环境的适当 Docker 映像。
  8. 针对内存限制 (MiB),选择软限制,然后输入 700
  9. 选择添加,然后选择创建

运行使用软限制的任务定义

  1. Amazon ECS 控制台的导航窗格中,选择集群,然后选择由您创建的集群。
  2. 选择任务视图,然后选择运行新任务
  3. 选择运行任务
    注:使用任务定义的名称和您在之前创建的集群对任务定义集群进行预填充。
  4. 如果任务使用软限制,而且它的上次状态列显示为正在运行,选择导航窗格中的集群
    注:要将任务状态更新为正在运行,刷新页面。
  5. 选择 ECS 实例视图,然后在容器实例列中选择实例。
    注:详细信息窗格显示可用列的内存小于已注册列的内存。
  6. 如需关于实例资源利用率的统计数据,使用 SSH 连接至实例,然后运行 docker stats 命令。
  7. 选择导航窗格中的集群,然后选择该集群。
  8. 选择任务视图,选择使用软限制的任务,然后选择停止
  9. 选择 ECS 实例视图,然后在容器实例列中选择实例。
    注:详细信息窗格显示可用列的内存等于已注册列的内存。

创建使用硬限制的新任务定义修订

  1. Amazon ECS 控制台的导航窗格中,选择任务定义
  2. 选择您创建的使用软限制的任务定义,然后选择创建新修订
  3. 容器定义部分的容器名称列,选择您为使用软限制的任务定义添加的容器。
  4. 针对内存限制 (MiB),选择硬限制,然后输入 1000
  5. 选择更新,然后选择创建

运行使用硬限制的任务定义修订

  1. Amazon ECS 控制台的导航窗格中,选择集群,然后选择由您创建的集群。
  2. 选择任务视图,然后选择运行新任务
  3. 针对任务定义,选择您创建的使用硬限制的任务定义,然后选择运行任务
  4. 如果任务修订使用硬限制,而且它的上次状态列显示为正在运行,选择导航窗格中的集群
    注:要将任务状态更新为正在运行,刷新页面。
  5. 选择 ECS 实例视图,然后在容器实例列中选择实例。
    注:详细信息窗格显示可用列的内存小于已注册列的内存。
  6. 如需关于实例资源利用率的统计数据,使用 SSH 连接至实例,然后运行 docker stats 命令。
  7. 选择导航窗格中的集群,然后选择该集群。
  8. 选择任务视图,选择使用硬限制的任务,然后选择停止
  9. 选择 ECS 实例视图,然后在容器实例列中选择实例。
    注:详细信息窗格显示可用列的内存等于已注册列的内存。

创建同时使用软限制和硬限制的新任务定义修订

  1. Amazon ECS 控制台的导航窗格中,选择任务定义
  2. 选择您创建的使用硬限制的任务定义,然后选择创建新修订
  3. 容器定义部分的容器名称列,选择您为使用硬限制的任务定义添加的容器。
  4. 针对内存限制 (MiB),选择软限制,然后输入 700
  5. 选择添加硬限制,然后输入 1200
  6. 选择更新,然后选择创建

运行同时使用软限制和硬限制的修订任务定义

  1. Amazon ECS 控制台的导航窗格中,选择集群,然后选择由您创建的集群。
  2. 选择任务视图,然后选择运行新任务
  3. 针对任务定义,选择您创建的同时使用软限制和硬限制的任务定义,然后选择运行任务
  4. 如果任务的上次状态列显示为正在运行,选择导航窗格中的集群
    注:要将任务状态更新为正在运行,刷新页面。
  5. 选择导航窗格中的集群,然后选择该集群。
  6. 选择任务视图,选择同时使用软限制金额硬限制的任务,然后选择停止
  7. 选择 ECS 实例视图,然后在容器实例列中选择实例。
    注:详细信息窗格显示可用列的内存小于已注册列的内存。
  8. 如需关于实例资源利用率的统计数据,使用 SSH 连接至实例,然后运行 docker stats 命令。

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?