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

私有子网ECS Fargate搭配Application Load Balancer容器循环重启问题咨询

问题排查与解决建议

1. 优先排查容器主进程逻辑

你给出的容器退出码为0,说明主进程是正常执行结束退出,而非异常崩溃,这是最高概率的触发重启的原因:

  • 你的容器启动命令是执行/tmp/init.sh,如果该脚本仅为初始化逻辑,执行完成后就退出,且脚本内部启动的业务进程是后台运行(加了&参数),那么主进程(执行脚本的bash)退出后,容器就会被判定为结束运行,ECS会自动重启任务。
  • 修复方案:
    • 在init.sh的最后,用exec命令启动你的业务服务进程,让业务进程接替bash成为PID 1主进程,持续保持运行
    • 若需要同时运行多个进程,可引入supervisor等进程管理工具作为容器主进程,保证业务进程持续在线

2. 调整健康检查相关配置

你的初始化脚本本地执行需要数分钟,默认的健康检查配置大概率没有预留足够的初始化时间:

  • 调整ECS服务的健康检查宽限期:在ECS服务配置中设置healthCheckGracePeriodSeconds参数,值要大于你的脚本最长初始化时间,比如初始化需要5分钟就设置为360,该时间内ECS不会因为健康检查失败排空任务。
  • 调整ALB目标组健康检查参数:
    • 把不健康阈值调高到10,健康检查间隔设置为30,累计给足5分钟的初始化等待时间
    • 确认健康检查的端口指定为9003,检查路径是你业务服务暴露的可访问路径(比如/或者/health),避免路径配置错误导致健康检查失败

3. 验证网络配置正确性

逐一核对以下配置避免网络不通导致健康检查失败:

  • 确认ECS任务的安全组入站规则,允许ALB安全组的IP段访问9003端口
  • 确认ALB的HTTPS监听器配置正确,证书有效,转发规则指向绑定了ECS服务的9003端口IP目标组
  • 确认VPC内网没有ACL规则拦截9003端口的通信

4. 排查容器运行日志

到CloudWatch Logs中查看对应ECS任务的容器日志,确认/tmp/init.sh的执行过程,排查是否有初始化报错、业务服务启动失败的情况,可在init.sh中增加打印日志的逻辑,确认脚本是否执行完成、业务服务是否成功监听9003端口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:36:02