【问题标题】:task running in ec2(spot-fleet) don't use more then 32GB of memory in ECS AWS在 ec2(spot-fleet) 中运行的任务在 ECS AWS 中使用的内存不超过 32GB
【发布时间】:2020-10-30 02:53:46
【问题描述】:

为什么 task(docker) 不使用超过 32GB 的 ec2,而超过 32GB 在 ec2 和任务定义中可用?

我不知道为什么 docker 不使用超过 32GB,因为我使用带有 122GB 的 ec2,并且我在任务定义中声明该任务具有 122GB 的 RAM。

我执行一个任务:

Task memory (MiB)121000
Task CPU (unit)3900

在 ECS 集群中运行,ec2(spot-fleet) x1e.xlarg with:

Task memory (MiB)122000
Task CPU (unit)4000

但是当我看到这个任务的docker stats 运行时,docker 使用的不超过32GB memory

Spot 队列配置

   amzn2-ami-ecs-gpu-hvm-2.0.20200706-x86_64-ebs [ami-082692cd7634df346]

   User-data

   #!/bin/bash
   echo "ECS_CLUSTER=tor-privoxy" >> /etc/ecs/ecs.config

【问题讨论】:

  • 请明确说明您的问题。

标签: amazon-web-services docker amazon-ec2 amazon-ecs


【解决方案1】:

ECS 任务没有这样的内存限制,我建议取消内存限制,以便您的任务在需要时能够使用底层 EC2 实例的Maximum 内存。

只需使用memoryReservation 参数并从任务定义中删除memory 配置。

memoryReservation
Type: integer

Required: no

为容器保留的内存的软限制(以 MiB 为单位)。当系统内存处于争用状态时,Docker 会尝试将容器内存保持在此软限制;但是,您的容器可以在需要时消耗更多内存,最高可达内存参数(如果适用)指定的硬限制,或容器实例上的所有可用内存,以先到者为准。此参数映射到 Docker Remote API 的 Create a container 部分中的 MemoryReservation 和 docker run 的 --memory-reservation 选项。

container_definition_memory

使用此设置启动容器后,您将能够看到 MEM USAGE / LIMIT,其中limit 将显示您的EC2 实例的最大内存以响应docker stats

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-11
    • 2019-12-22
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多