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

Amazon ECS环境下EC2实例周期性宕机问题排查求助

你遇到的EC2实例周期性宕机确实是OOM(内存不足)相关问题,核心原因如下:

  • 你当前使用的t2.micro实例总内存仅1GiB,除开分配给两个任务的合计700MiB内存外,ECS实例本身运行所需的系统进程(ecs-agent、docker daemon、操作系统基础进程)还需要至少200~300MiB内存,预留空间本身就存在不足
  • 你没有给容器设置硬内存限制,容器实际内存占用可以超过你给任务分配的350MiB配额,当两个容器同时超出预留内存时,会直接抢占系统进程的内存,触发Linux内核的OOM Killer机制,当OOM Killer杀掉系统关键进程(而非容器进程)时,就会导致整个实例无响应宕机,对应你看到的CloudWatch指标中断
解决步骤

1. 优先给容器配置硬内存限制

在任务定义中为每个容器添加memory硬限制参数,值设置为小于等于任务级别的350MiB配额。开启后容器内存超过限制时,Docker会直接重启该容器,不会影响宿主机其他进程或另一个容器,符合你期望的单容器异常单独重启的逻辑。

2. 调整实例资源或任务分配

两个方案二选一即可:

  • 保留t2.micro实例的话,将单任务的内存配额下调到256MiB,对应容器硬内存限制也设为256MiB,给系统预留足够的运行内存
  • 不调整任务配额的话,将ECS集群实例升级为t2.small(2GiB内存),完全消除资源预留不足的隐患

3. 配置OOM相关监控和日志

  • 在EC2实例上开启系统日志收集到CloudWatch Logs,重点监控/var/log/messages中的OOM Killer日志,出现OOM事件时可以直接确认是哪个进程触发的问题
  • 为ECS服务配置实例健康检查告警,实例异常时可以第一时间收到通知,减少恢复等待时间

4. 可选:开启ECS实例自动恢复

在EC2实例配置中开启自动恢复功能,实例出现系统级故障时AWS会自动重启实例,将恢复时间从几十分钟缩短到几分钟级别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:03