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

NextJs部署至App Engine卡在default服务更新,超时失败求助

问题描述

通过Cloud Build将Next.js应用部署到App Engine标准环境(nodejs16)时,出现超时失败错误:
ERROR: (gcloud.app.deploy) Error Response: [4] Cloud build did not succeed within 10m.
该问题仅出现在开发环境(每日部署3-5次),生产环境使用相同配置可正常完成部署。Cloud Build前置的npm install、npm run build步骤仅耗时1-2分钟,超时问题集中在gcloud app deploy执行阶段,对应App Engine内部版本创建操作等待超时。

相关配置文件

app.yaml(开发环境为app-develop.yaml)

env: standard
runtime: nodejs16
service: default
instance_class: F4
inbound_services:
  - warmup
automatic_scaling:
  min_idle_instances: 1
  min_instances: 1
handlers:
  - url: /.*
    secure: always
    script: auto

cloudbuild.yaml

steps:
  - name: node:16
    id: "npm-install"
    entrypoint: npm
    args: ["install"]
    timeout: 3600s
  - name: node:16
    id: "env-config"
    entrypoint: npm
    args: ["run", "create-env"]
    env:
      ...
  - name: node:16
    id: "build"
    entrypoint: npm
    args: ["run", "build"]
    timeout: 3600s
    waitFor: ['env-config']
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy', './app-develop.yaml', '--verbosity=debug', '--no-cache']
    timeout: 3600s # 该参数未生效,Cloud Build仍受App Engine内部超时限制
    waitFor: ['build']
timeout: 3600s # 该参数未生效,Cloud Build仍受App Engine内部超时限制
options:
  machineType: 'E2_HIGHCPU_8'

关键日志片段

...
DEBUG: Operation [apps/guarddog-dev/operations/2493a78d-7c11-4426-a448-e1290b67ca8a] not complete. Waiting to retry.
DEBUG: Operation [apps/guarddog-dev/operations/2493a78d-7c11-4426-a448-e1290b67ca8a] complete. Result: {
    "done": true,
    "error": {
        "code": 4,
        "message": "Cloud build did not succeed within 10m.\nAn unexpected error occurred. Refer to build logs: ..."
    },
    "metadata": {
        "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
        "endTime": "2022-09-08T16:07:15.724Z",
        "insertTime": "2022-09-08T15:57:07.718Z",
        "method": "google.appengine.v1.Versions.CreateVersion",
        "target": "apps/guarddog-dev/services/default/versions/20220908t155703",
        "user": "479185250478@cloudbuild.gserviceaccount.com"
    }
}
failed.    
DEBUG: (gcloud.app.deploy) Error Response: [4] Cloud build did not succeed within 10m.
解决方案建议

1. 延长App Engine部署等待超时

gcloud app deploy默认等待App Engine内部构建/版本创建的超时时间为10分钟,可通过--timeout参数延长该等待时长(此参数与Cloud Build步骤的timeout独立,控制的是gcloud命令的等待时间):

gcloud app deploy ./app-develop.yaml --verbosity=debug --no-cache --timeout=30m

2. 清理开发环境旧版本

频繁部署产生的大量旧版本会占用App Engine资源,导致版本创建、流量迁移耗时增加。定期清理旧版本:

# 列出default服务下的所有版本
gcloud app versions list --service=default --project=guarddog-dev
# 删除指定旧版本(保留最近3-5个即可)
gcloud app versions delete VERSION_ID1 VERSION_ID2 --service=default --project=guarddog-dev

也可在App Engine控制台开启自动清理旧版本功能,设置保留的版本数量,避免手动清理的繁琐。

3. 跳过App Engine二次构建

当前Cloud Build已完成npm run build,但App Engine标准环境部署时默认会再次执行构建步骤,这会额外消耗时间。可通过以下方式跳过二次构建:

  • 在app-develop.yaml中添加skip_files配置,避免构建产物被重复处理:
    skip_files:
      - ^\.next$
    
  • 部署时添加--no-build参数,直接使用Cloud Build已完成的构建产物:
    gcloud app deploy ./app-develop.yaml --verbosity=debug --no-build
    
    注意:使用--no-build需确保Cloud Build中的npm run build已生成符合App Engine要求的完整产物。

4. 调整开发环境扩缩容配置

开发环境设置的min_idle_instances: 1和min_instances: 1会持续占用资源,频繁部署时可能拖慢版本切换速度。可临时调整为:

automatic_scaling:
  min_idle_instances: 0
  min_instances: 0

减少闲置实例的资源占用,让App Engine更快完成版本创建与流量迁移。

5. 排查App Engine内部构建日志

查看报错中指向的App Engine内部构建日志,定位具体卡顿环节(如依赖安装超时、资源不足等)。在Cloud Build控制台找到对应的内部构建任务,查看详细日志可帮助定位根本原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:05:17