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

AWS ECS部署Spring Boot应用失败:目标组注销问题求助

问题分析与解决方案:AWS ECS Spring Boot服务因目标组健康检查超时被注销

核心问题定位

从日志可明确根因:service plm-service port 8091 is unhealthy in target-group plm-TG due to (reason Request timed out)——目标组对8091端口的健康检查请求超时,触发ECS自动注销实例并停止任务。

1. 核对Spring Boot健康检查端点配置

  • Spring Boot默认健康检查端点为/actuator/health(需引入spring-boot-starter-actuator依赖),确认目标组健康检查路径匹配:
    • 进入AWS控制台EC2 > 目标组 > plm-TG,检查健康检查设置的路径是否为/actuator/health(避免误用Flask常用的/health)
    • 确保项目依赖中包含Actuator,且配置文件未禁用健康端点:
      management.endpoints.web.exposure.include=health
      management.endpoint.health.show-details=always # 可选,用于调试
      

2. 验证容器内端口监听状态

  • 通过ECS Exec进入容器,或登录容器实例,执行命令检查8091端口是否被监听:
    netstat -tulpn | grep 8091
    # 或使用ss命令
    ss -tulpn | grep 8091
    
  • 确认Spring Boot启动日志中存在Tomcat started on port(s): 8091 (http)类输出,且application.properties已配置server.port=8091(避免默认绑定8080端口)

3. 检查安全组与网络ACL规则

  • 容器实例/任务安全组:允许目标组健康检查IP范围的8091端口入站流量(VPC控制台可查看健康检查IP段)
  • 网络ACL:确认VPC及子网的网络ACL无拦截8091端口入站/出站流量的规则,确保全量允许相关流量

4. 调整健康检查超时与阈值

  • Spring Boot应用启动(含RDS连接初始化)耗时可能超过默认健康检查超时,可修改目标组配置:
    • 将超时调整为10-30秒,间隔设为30秒
    • 把不健康阈值改为3次,健康阈值改为2次,给应用足够的启动响应缓冲时间

5. 排查RDS连接对启动的影响

  • 临时替换RDS为本地H2数据库,测试应用是否能通过健康检查,排除数据库连接慢导致的启动阻塞
  • 检查Spring Boot数据库连接配置,确保spring.datasource.hikari.connection-timeout等参数设置合理,避免启动阶段卡在连接建立步骤

6. 确认ECS任务端口映射配置

  • 检查ECS任务定义的容器端口映射:确保容器内8091端口已正确映射(AWSVPC模式下直接暴露8091端口,桥接模式下需映射到主机端口),且目标组配置的端口与任务定义一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:27:49