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

Google Cloud App Engine Node.js实例无法停机,持续计费求助

解决方案:让GAE实例按需缩容并修复标准环境部署问题

一、Flexible环境:实现实例缩容至0(停止全天候计费)

你当前的Flex环境配置存在语法错误和缩容限制未解除两个核心问题,导致无法设置min_num_instances:0。

1. 修正app.yaml语法错误

原配置的列表符号(-)使用违规,正确的Flex环境配置格式如下:

runtime: nodejs
env: flex
runtime_config:
  operating_system: ubuntu22
env_variables:
  LOCATION: GCLOUD
  GITHUB_TOKEN: *****
automatic_scaling:
  min_num_instances: 0
  max_num_instances: 1
  cool_down_period: 120s
  cpu_utilization:
    target_utilization: 0.5
liveness_check:
  initial_delay_sec: 60  # 缩短初始延迟,帮助系统更快判断实例状态
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 4
  success_threshold: 2
readiness_check:
  check_interval_sec: 5
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
  app_start_timeout_sec: 120  # 缩短启动超时时间

2. 解除缩容限制

设置min_num_instances:0必须满足以下条件:

  • 禁用会话亲和性(当前配置未启用,若之前开过需确认彻底关闭)
  • 应用必须正确响应健康检查:Node.js服务需监听0.0.0.0:8080端口,且默认健康检查路径/能返回200状态码
  • 不要配置持久磁盘(若有相关配置需移除)

若部署仍失败,执行gcloud app deploy --verbosity=debug获取详细日志,通常是健康检查不通过或配置冲突导致。

二、Standard环境:修复部署崩溃问题

标准环境部署崩溃大概率是端口监听错误或启动脚本问题,按以下步骤排查:

1. 修正标准环境app.yaml配置

移除不必要的设置,确保格式正确:

runtime: nodejs18
env: standard
automatic_scaling:
  max_instances: 1
  min_instances: 0  # 标准环境默认支持缩容到0

2. 检查应用核心配置

  • 确认Node.js应用监听0.0.0.0:8080端口(标准环境强制要求),示例代码:
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;

app.get('/', (req, res) => {
  res.status(200).send('OK');
});

app.listen(port, '0.0.0.0', () => {
  console.log(`Server running on port ${port}`);
});
  • 检查package.json的start脚本是否正确,例如:"start": "node server.js"
  • 执行gcloud app logs tail -s default查看应用日志,定位崩溃具体原因(如依赖缺失、代码语法错误等)

三、额外建议

  • 临时停止实例可执行gcloud app versions stop [VERSION_ID],避免不必要的计费
  • 低流量API优先选择Standard环境,其缩容逻辑更成熟,计费按实例实际运行时长计算,空闲时自动停实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:51:03