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

修改任务定义后CloudFormation更新服务因端口占用卡顿求助

问题背景

修改ECS任务定义的环境变量并执行CloudFormation变更集后,任务定义已更新成功,但服务更新流程卡顿。查看ECS集群事件可知:系统尝试启动新任务,但旧任务未正常退出仍占用端口,导致新任务无法启动,更新停滞。需在不删除栈重新部署的前提下,让CloudFormation栈更新正常完成。

可行解决方案

1. 调整ECS服务部署策略

修改CloudFormation模板中ECS服务的DeploymentConfiguration配置,放宽健康任务的限制,给旧任务留出退出时间:

  • 将MinimumHealthyPercent设为0,允许更新期间暂时没有健康任务运行
  • 保持MaximumPercent为200(默认值),确保新任务能正常启动
    示例YAML配置:
DeploymentConfiguration:
  MaximumPercent: 200
  MinimumHealthyPercent: 0

更新变更集并重新执行,让CloudFormation按新策略推进服务更新。

2. 配置任务优雅终止逻辑

在任务定义中添加StopTimeout参数,指定旧任务收到停止信号后的超时时间(建议30-60秒),同时确保应用能响应SIGTERM信号主动释放端口:

ContainerDefinitions:
  - Name: your-container
    StopTimeout: 30
    # 其他容器配置...

这样旧任务会有足够时间完成清理,避免端口占用导致新任务启动失败。

3. 手动终止冲突的旧任务(应急处理)

如果上述配置调整后仍卡顿,可手动终止占用端口的旧任务:

  • 登录ECS控制台,进入目标集群 -> 对应服务 -> 「任务」标签页
  • 选中运行中的旧任务,点击「停止」并选择「立即终止」
    手动操作后,CloudFormation的服务更新流程会自动继续执行。

4. 排查端口与服务发现配置

  • 检查任务定义的端口映射,确认无多个容器绑定同一主机端口的情况
  • 若使用服务发现,验证服务发现记录是否正常更新,避免因新任务注册失败导致旧任务不被终止

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:45:43