Amazon ECS 服务节流逻辑
Amazon ECS 服务计划程序包含保护性逻辑,当任务反复启动失败后,会限制任务启动频率。这有助于防止不必要的资源消耗并降低成本。
如果服务中的任务未从 PENDING
状态转换为 RUNNING
状态,而是直接进入 STOPPED
状态,计划程序会执行以下操作:
-
逐渐延长重启尝试间隔的时间
-
持续增加延迟时间,直至最长尝试间隔延长至 27 分钟
-
生成服务事件消息以通知您出现此问题
注意
27 分钟的最长延迟间隔可能会在未来的更新中更改。
节流激活后,会收到以下服务事件消息:
(service
service-name
) is unable to consistently start tasks successfully.
节流逻辑的重要特征:
-
服务会无限期地继续重试
-
唯一的变化是延长了重启间隔的时间
-
没有用户可配置的参数
解决节流问题
要解决节流问题,可以:
-
更新服务以使用新的任务定义,这将使服务立即恢复为正常的无节流操作状态。有关更多信息,请参阅 更新 Amazon ECS 服务。
-
解决导致任务失败的根本原因。
触发节流的常见任务失败原因包括:
-
集群资源(端口、内存或 CPU)不足
-
由资源服务不足的事件消息表示
-
-
容器映像拉取失败
-
可能由无效的映像名称、标签或权限不足引起
-
导致在 查看 Amazon ECS 已停止任务错误 中出现
CannotPullContainerError
-
-
磁盘空间不足
-
导致在已停止的任务错误中出现
CannotCreateContainerError
-
有关解决步骤,请参阅对 Amazon ECS 中的 Docker API error (500): devmapper 进行故障排除
-
重要
以下场景不会触发节流逻辑:
-
任务在进入
RUNNING
状态后停止 -
任务因 Elastic Load Balancing 运行状况检查失败而停止
-
任务中的容器命令在进入
RUNNING
状态后退出并返回非零代码