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

ECS EC2实例中Docker任务HTTP请求连接超时问题排查

ECS EC2启动类型容器HTTP请求超时排查方向

核心现象对齐:EC2宿主机网络访问正常、同业务代码Fargate启动类型运行无异常,仅EC2部署的容器内所有HTTP请求连接超时,按优先级排查以下问题:

  • 任务网络模式关联的安全组配置缺失
    若任务使用awsvpc网络模式,ECS会为每个任务分配独立的弹性网卡(ENI),该ENI使用的安全组是任务定义阶段单独配置的,和EC2实例绑定的安全组完全独立。绝大多数该类故障都是因为只放开了EC2实例的安全组规则,没有给任务ENI对应的安全组放开80/443出站访问权限,导致容器流量被安全组拦截。Fargate启动类型运行正常是因为创建Fargate任务时通常会正确配置任务级安全组。
    排查方式:在ECS控制台查看故障任务的详情,确认网络模式,若为awsvpc则找到关联的安全组,检查出站规则是否放通对应目标(SQS服务的443端口等)的访问权限。
  • Docker网桥转发规则被拦截
    若任务使用bridge默认网络模式,检查EC2实例上的iptables FORWARD链规则:Docker依赖iptables的MASQUERADE规则实现容器流量的源地址转换,若实例上自定义了防火墙规则、安全组件将FORWARD链默认策略设置为DROP,或添加了针对docker0网桥的拦截规则,就会出现宿主机访问正常、容器流量无法转发的问题。
    排查命令:在EC2宿主机执行iptables -L FORWARD -n -v,确认链默认策略为ACCEPT,无针对docker网桥的DROP规则。
  • 容器侧代理配置异常
    检查任务定义中的环境变量、Docker daemon全局配置是否设置了HTTP_PROXY/HTTPS_PROXY/NO_PROXY参数:如果配置了不可达的代理地址,容器内所有HTTP/HTTPS请求会被转发到失效代理导致连接超时,而宿主机未加载该代理配置所以访问正常。
    排查方式:进入故障容器执行env | grep -i proxy,确认是否存在无效代理配置。
  • 容器侧DNS配置异常
    检查容器内/etc/resolv.conf配置是否被覆盖:如果Dockerfile或启动脚本硬编码了不可达的DNS服务器,会导致公网域名解析/连接异常。可在容器内执行nslookup sqs.<对应区域>.amazonaws.com,对比返回结果和宿主机解析结果是否一致。
  • 附带配置问题修正
    你提供的Dockerfile中健康检查配置存在语法问题:exec格式的HEALTHCHECK指令不会启动shell解析命令,|| 逻辑符无法被识别,会导致健康检查持续失败,可能触发任务异常重启。建议修改为shell格式:
    HEALTHCHECK --interval=25s --timeout=3s --retries=2 CMD java HealthCheck || echo "HEALTH CHECK:FAILED"
    
    该问题不会直接导致HTTP请求超时,可一并修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:27:16