【问题标题】:Failed Deployment in App Engine Google CloudApp Engine Google Cloud 中的部署失败
【发布时间】:2026-02-11 21:45:02
【问题描述】:

我正在谷歌云应用引擎中部署我的 nodejs 应用程序,但它给出了错误 此请求导致为您的应用程序启动一个新进程,从而导致您的应用程序代码首次加载。 因此,与您的应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的 CPU。 -- 发出请求时。

我也看到了一些 * 的答案,但它们对我没有用。

我的 app.yaml 有这个配置

运行时:nodejs10

谁能帮帮我

【问题讨论】:

    标签: express google-app-engine google-cloud-platform google-appengine-node


    【解决方案1】:

    您可以将以下内容添加到您的 app.yaml:

    inbound_services:
    - warmup
    

    然后实现一个处理程序来捕获所有预热请求,这样您的应用程序就不会得到全部负载。完整的解释在here。另一个关于这个主题的详细帖子可以找到here

    此外,您还可以添加自动缩放选项。您可以与那些玩一点,以找到最适合您的应用程序。尤其是与延迟相关的变量很重要。值得注意的是,它们可以在标准 GAE 环境中设置。

    automatic_scaling:
      min_idle_instances: automatic
      max_idle_instances: automatic
      min_pending_latency: automatic
      max_pending_latency: automatic
    

    更多缩放选项可以在here找到。

    【讨论】:

    【解决方案2】:

    “请求导致启动新进程”通知通常发生在您的应用程序中没有预热请求时。

    您能否尝试实现一个仅在应用程序预热时返回就绪状态的运行状况检查处理程序。这将允许您的服务在准备好之前不会接收流量。

    警告:现在使用 /_ah/health 路径进行旧版运行状况检查 已弃用,您应该迁移以使用拆分运行状况检查。

    在这里你可以找到 Nodejs 的 Split health checks

    活性检查

    Liveness 检查确认 VM 和 Docker 容器是 跑步。被认为不正常的实例会重新启动。

      path: "/liveness_check"
      check_interval_sec: 30
      timeout_sec: 4
      failure_threshold: 2
      success_threshold: 2
    
    

    准备情况检查

    就绪检查确认实例可以接受传入 要求。未通过就绪检查的实例不会被添加 到可用实例池中。

      path: "/readiness_check"
      check_interval_sec: 5
      timeout_sec: 4
      failure_threshold: 2
      success_threshold: 2
      app_start_timeout_sec: 300
    

    编辑

    对于不提供灵活性的 App Engine Standard,可能会在没有事先警告的情况下发生导致提前终止或频繁重启的硬件和软件故障。 link

    App Engine 尝试保持手动和基本扩展实例运行 无限期地。但是,目前无法保证正常运行时间 手动和基本扩展实例。硬件和软件故障 导致提前终止或频繁重启的情况可能发生 事先警告,可能需要相当长的时间才能解决;因此,你 应该以容忍这些的方式构建您的应用程序 失败。

    以下是一些避免因实例而导致停机的好策略 重启:

    减少实例重启或 新的开始。

    对于长时间运行的计算,定期创建 检查点,以便您可以从该状态恢复。

    您的应用应该是“无状态的”,以便实例上不存储任何内容。

    使用队列来执行异步任务。

    如果您将实例配置为手动扩展:在 > 多个实例之间使用负载平衡。配置比处理正常所需更多的实例 交通。手动编写使用缓存结果的回退逻辑 伸缩实例不可用。

    Instance Uptime

    【讨论】:

    • 这似乎是个好主意。但我是在标准环境中使用我的应用程序。健康检查将重新启动服务器。这意味着我在标准环境中的实例永远不会关闭。我这将表现为 flex 环境。如果我错了,请纠正我