在 Google Cloud App Engine 上禁用默认健康检查

Disable default healthcheck on Google Cloud App Engine

我们是 运行 App Engine Flex 上的 .Net Core 应用程序。尝试禁用 healthcheck,它以相当高的速度命中我们的服务 ~72 reqs/sec:

这个 app.yaml 出于某种原因不会禁用健康检查:

env: flex
runtime: aspnetcore
vm_health_check:
 enable_health_check: False


resources:
cpu: 12
memory_gb: 14.4
disk_size_gb: 20

automatic_scaling:
 min_num_instances: 6
 max_num_instances: 20
 cool_down_period_sec: 180
 cpu_utilization:
  target_utilization: 0.5

有什么想法吗?

这个以前也出现过,没看到解决方法。似乎是 GAE 中的错误。这里有一些尝试:

1) 确保你没有一些后端实例(它使用它自己的 app.yaml)运行.

2) 尝试:

health_check:
  enable_health_check: False
  check_interval_sec: 60
  timeout_sec: 4
  unhealthy_threshold: 2
  healthy_threshold: 2

3) 关闭您的实例并重新启动它们。

Modyfing app.yaml 以您所做的方式仅禁用一种类型的健康检查,后端仍然 运行 并且无法通过 app.yaml 配置访问它们。在 Google 的问题跟踪器中创建了两个与此主题相关的问题 - 您可以跟踪 and/or 为它们加注星标 here and here。 您可以做的是通过 Cloud Shell 修改健康检查,以降低它们的攻击性。部署启用健康检查的版本(如果您现在已禁用它们)并列出它们:

$ gcloud compute https-health-checks list 

查看给定健康检查的当前设置:

$ gcloud compute https-health-checks describe [healthcheck_NAME] 

更改名称以“-hcs”结尾的健康检查的设置:

$ gcloud compute https-health-checks update [healthcheck_NAME] --check-interval=5 --healthy-threshold=2 --timeout=5 --unhealthy-threshold=2 

(显然你可以在上面的命令中选择不同的值)

您可以在 GCP 文档中找到上述命令 here

您的 app.yaml 中有错字。您应该使用 health_check 而不是 vm_health_check,如:

health_check: enable_health_check: False