AppEngine灵活的实例不断重生

时间:2016-12-30 23:47:02

标签: google-app-engine google-cloud-platform google-managed-vm app-engine-flexible

我正在使用AppEngine灵活部署Go应用程序。下面是我的app.yaml。有时在我部署之后它稳定在1个实例(这是一个非常低的负载应用程序),但大多数时候它不断重新生成6个实例。我的日志中充满了显示正在创建的新实例的消息。这个应用程序几乎没有负载,为什么AppEngine会灵活地不断破坏和重新生成实例?

显示持续重生的日志:

Log showing constant respawning.

的app.yaml

runtime: go
api_version: go1
env: flex

handlers:
- url: /.*
  script: _go_app

health_check:
  enable_health_check: True
  check_interval_sec: 10
  timeout_sec: 4
  unhealthy_threshold: 2
  healthy_threshold: 2

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 10
  cool_down_period_sec: 120 # default value
  cpu_utilization:
    target_utilization: 0.5

1 个答案:

答案 0 :(得分:1)

问题在于我的健康检查功能。它最初看起来像这样:

func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
    return
}

然后我在关于如何管理实例的文档中发现了这句话:

  

您可以编写自己的自定义运行状况检查代码。它应该使用HTTP状态代码200回复​​/ _ah / health请求。响应必须包含消息正文,但是,忽略正文的值(它可以为空)。

所以我更改了运行状况检查功能,在响应中写了一个简单的“ok”:

func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("ok"))
    return
}

现在,实例的行为符合我的自动缩放设置!重生已经消失。

我显然应该更接近阅读文档,但健康检查日志中没有任何问题。所有健康检查看起来都像是在经过。希望这些信息对其他人有用。