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

迁移至Fastify后ECS Fargate健康检查持续失败该如何解决?

问题排查方案
  • 确认Fastify监听地址
    Fastify默认仅绑定本地回环地址127.0.0.1,和Express默认绑定0.0.0.0的行为不同,这会导致容器外部的健康检查请求无法访问到服务。启动服务时需要显式指定监听地址为0.0.0.0:
    await server.listen({ port: 3000, host: '0.0.0.0' })
    
  • 核对网络访问规则
    你提到容器日志中完全没有健康检查请求记录,大概率是网络层面请求被拦截:
    1. 检查Fargate服务关联的安全组入站规则,是否允许负载均衡所在的CIDR或者安全组访问3000端口
    2. 确认VPC的网络访问控制列表(NACL)没有拦截对应端口的入站流量
  • 调整健康检查宽限期
    SSR服务启动阶段通常需要预加载模板、资源等内容,若健康检查没有配置启动宽限期,服务还未完成启动就会被判定不健康终止。可以在CloudFormation中增加HealthCheckGracePeriodSeconds配置,根据服务启动时长设置为30~120秒不等。
  • 优化HEAD请求处理逻辑
    如你补充的版本说明,Fastify 3.10.x及以上版本可以直接开启自动HEAD路由支持,无需单独定义server.head规则,避免自定义逻辑可能带来的异常:
    const fastify = require('fastify')({
      exposeHeadRoutes: true
    })
    
  • 容器内本地验证
    临时关闭服务的健康检查配置,启动容器后进入容器内部执行curl -I http://127.0.0.1:3000/categories,确认服务本身在容器环境下可以正常响应请求,排除打包、镜像构建阶段的配置错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:36:03