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

部署在AWS上的FastAPI服务频繁自动重启问题求助

排查建议
  • 禁用Uvicorn的开发重载模式:你的main.py里用了reload=True,这是开发环境专属的代码热加载选项,生产环境绝对不能用。重载机制会监听文件变动,容器内的临时文件更新、日志写入都可能触发无意义的重启。修改代码为:

    uvicorn.run("app.main:app", host="0.0.0.0", port=9026, reload=False)
    

    或者直接删除reload参数(默认值即为False)。

  • 检查容器资源限制与监控:

    • 登录AWS控制台,查看容器服务(ECS/Beanstalk)的监控指标:CPU使用率、内存使用率、OOM(内存不足)事件。处理请求时调用OpenAI API可能导致资源占用突增,一旦超过容器配置的资源限额,系统会强制杀掉进程触发重启。
    • 尝试调高容器的CPU/内存配额,观察重启现象是否消失。
  • 增强日志捕获能力:

    • 调整Uvicorn启动参数开启debug级日志:uvicorn.run(..., log_level="debug"),记录更多启动、请求处理的细节。
    • 在OpenAI调用逻辑外层添加全局异常捕获,记录所有可能的错误(包括未捕获的异常):
      from fastapi import FastAPI
      import openai
      import logging
      
      logging.basicConfig(level=logging.DEBUG)
      logger = logging.getLogger(__name__)
      
      app = FastAPI()
      # 全局单例OpenAI客户端
      client = openai.OpenAI()
      
      @app.post("/generate")
      def generate_text():
          try:
              response = client.chat.completions.create(
                  model="gpt-3.5-turbo",
                  messages=[{"role": "user", "content": "test"}],
                  timeout=30
              )
              return {"result": response.choices[0].message.content}
          except Exception as e:
              logger.error(f"OpenAI调用失败: {str(e)}", exc_info=True)
              raise
      
    • 确认容器的stdout/stderr日志是否完整输出,避免被截断。
  • 检查健康检查配置:

    • 查看AWS容器的健康检查规则:是否设置了过短的超时时间?健康检查的端点是否涉及复杂逻辑(比如调用OpenAI)?
    • 新增一个轻量的健康检查端点:
      @app.get("/health")
      def health_check():
          return {"status": "ok"}
      
      然后将健康检查路径指向/health,延长超时时间(比如10秒),调整检查间隔(比如30秒)。
  • 排查进程退出原因:

    • 在AWS控制台查看容器任务的停止原因(ECS任务详情/Beanstalk应用日志),系统会记录进程退出的状态码、终止原因(比如OOM kill、用户进程主动退出)。即使应用日志无有效信息,AWS的系统日志可能存在线索。
  • 检查连接与资源泄漏:

    • 确保OpenAI客户端是全局初始化的单例,不要在每个请求里创建新客户端,避免连接数过多耗尽文件描述符。
    • 排查代码中是否存在未关闭的文件、数据库连接等资源泄漏情况,长期运行后可能导致进程崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:52:57