You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS ECS任务定义中Docker Nginx内存配置及RESOURCE:MEMORY错误修复

修复ECS任务启动的RESOURCE:MEMORY错误

问题根源

t2.micro实例总内存为1GB,ECS优化AMI会预留约54MB给系统和ECS代理组件,因此ECS注册的可用内存显示为970MB。但实际场景中,系统进程、ECS代理本身会占用部分内存,再加上Docker运行时的开销,导致实际可分配给任务的内存可能低于970MB。你的任务定义中设置了memoryReservation: 512(软内存预留),虽看似小于剩余内存,但实际物理内存可能不足以支撑该预留值。

解决方案

1. 降低任务的内存预留值

由于你的Nginx容器实际仅占用4.8MiB内存,完全不需要预留512MB。修改任务定义中的memoryReservation为更小的值,比如128MB或256MB:

"containerDefinitions": [
  {
    // ... 其他配置
    "memoryReservation": 128,
    // ... 其他配置
  }
]

重新注册任务定义后,再次运行任务即可。

2. 改用硬内存限制(可选)

如果想更精准控制内存使用,可以设置memory(硬限制)替代memoryReservation,明确指定容器可使用的最大内存:

"containerDefinitions": [
  {
    // ... 其他配置
    "memory": 128,
    // 移除 memoryReservation 配置
    // ... 其他配置
  }
]

硬限制会让ECS调度器更准确地判断资源是否充足,避免因软预留导致的调度误判。

3. 检查实例实际内存使用

登录到EC2容器实例,执行以下命令查看物理内存使用情况:

free -h
docker stats ecs-agent
  • free -h可以看到系统剩余的物理内存,确认是否有其他进程占用了过多内存。
  • docker stats ecs-agent可以查看ECS代理的内存占用,如果代理占用超过100MB,建议升级到最新的ECS优化AMI版本,新版本的代理内存占用更低。

4. 升级ECS优化AMI(可选)

旧版本的ECS优化AMI可能存在系统组件或ECS代理内存占用过高的问题,替换实例为最新的ECS优化AMI,可以释放更多可用内存给任务。

内容的提问来源于stack exchange,提问作者Inspiraller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:32:11