amazon-web-services - 在 ec2(spot-fleet) 中运行的任务在 ECS AWS 中使用的内存不超过 32GB
问题描述
为什么任务(docker)不使用超过32GB
ec2,而32GB
在 ec2 和任务定义中可用的更多?
我不知道为什么 docker 不使用 more than 32GB
,因为我使用 ec2 with 122GB
,并且我在任务定义中声明该任务具有122GB
RAM。
我执行以下任务:
Task memory (MiB)121000
Task CPU (unit)3900
在 ECS 集群 ec2(spot-fleet) x1e.xlarg 中运行:
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
解决方案
ECS 任务没有这样的内存限制,我建议取消内存限制,以便您的任务Maximum
在需要时能够使用底层 EC2 实例的内存。
只需使用memoryReservation
参数并memory
从任务定义中删除配置。
memoryReservation
Type: integer
Required: no
为容器保留的内存的软限制(以 MiB 为单位)。当系统内存处于争用状态时,Docker 会尝试将容器内存保持在此软限制;但是,您的容器可以在需要时消耗更多内存,最高达到使用内存参数(如果适用)指定的硬限制,或容器实例上的所有可用内存,以先到者为准。此参数映射到
MemoryReservatio
Docker Remote API 的 Create a container 部分中的 n 和--memory-reservation
docker run 的选项。
使用此设置启动容器后,您将能够看到 MEM USAGE / LIMIT
哪里limit
将显示 EC2 实例的最大内存以响应docker stats
推荐阅读
- javascript - 配置prism.js识别
标签(没有
tag)
- rust - 为什么在 rust rocket_contrib 时“服务中没有 crate_relative”?
- terratest - 如何使用 terraTest 列出所有现有 VM
- pandas - 如何将由不规则、混合格式的数据和混合分隔符组成的 csv 文件加载到数据框中?
- dockerfile - Visual Studio 生成的 Dockerfile 奇怪路径
- reactjs - 如何在打字稿类型定义中使用常量?
- c# - 调整可序列化列表大小(Unity C#)
- if-statement - 如何使用 If 和 listBox1.SelectedItem 更改图片框
- hash - 在 Java 中使用 Redisson 在 Redis 中创建 SQL 类型表的任何替代解决方案
- php - 如何更改使用 PHP 作为 gform_pre_submission 的一部分选择 Gravity Forms 单选按钮字段中的哪个选项