AppEngine 灵活实例不断重生
AppEngine Flexible instances constantly respawning
我正在使用 AppEngine flexible 部署 Go 应用程序。下面是我的app.yaml。有时在我部署后它会稳定在 1 个实例(这是一个负载非常低的应用程序),但大多数时候它会不断重生 6 个以上的实例。我的日志中充满了显示正在创建的新实例的消息。这个应用程序几乎是零负载,为什么 AppEngine 可以灵活地不断销毁和重生实例?
显示不断重生的日志:
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
问题出在我的健康检查功能上。原来是这样的:
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
return
}
然后我在关于如何管理实例的文档中发现了这句话:
You can write your own custom health-checking code. It should reply to /_ah/health requests with a HTTP status code 200. The response must include a message body, however, the value of the body is ignored (it can be empty).
所以我改健康检查功能写了一个简单的"ok"响应:
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))
return
}
实例现在根据我的自动缩放设置运行!重生消失了。
我显然应该更仔细地阅读文档,但健康检查日志中的问题指示为零。所有健康检查看起来都通过了。希望此信息对其他人有所帮助。
我正在使用 AppEngine flexible 部署 Go 应用程序。下面是我的app.yaml。有时在我部署后它会稳定在 1 个实例(这是一个负载非常低的应用程序),但大多数时候它会不断重生 6 个以上的实例。我的日志中充满了显示正在创建的新实例的消息。这个应用程序几乎是零负载,为什么 AppEngine 可以灵活地不断销毁和重生实例?
显示不断重生的日志:
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
问题出在我的健康检查功能上。原来是这样的:
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
return
}
然后我在关于如何管理实例的文档中发现了这句话:
You can write your own custom health-checking code. It should reply to /_ah/health requests with a HTTP status code 200. The response must include a message body, however, the value of the body is ignored (it can be empty).
所以我改健康检查功能写了一个简单的"ok"响应:
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))
return
}
实例现在根据我的自动缩放设置运行!重生消失了。
我显然应该更仔细地阅读文档,但健康检查日志中的问题指示为零。所有健康检查看起来都通过了。希望此信息对其他人有所帮助。