Google App Engine运行状况检查垃圾邮件应用

时间:2017-03-16 18:05:36

标签: node.js google-app-engine google-cloud-platform

我使用以下app.yaml配置部署了在Google App Engine Flex运行时上运行的nodejs应用程序:

runtime: nodejs
env: flex
health_check:
  enable_health_check: True
  check_interval_sec: 20
  timeout_sec: 4
  unhealthy_threshold: 2
  healthy_threshold: 2

根据health check documentation,健康状况检查应每隔20秒点击/_ah/health端点。但是我注意到我的应用程序每秒多次使用这些运行状况检查发送垃圾邮件,即使该应用程序使用200状态代码进行响应:

enter image description here

知道为什么会这样吗?

4 个答案:

答案 0 :(得分:15)

不幸的是,我们的文档似乎有错误。事实上,今天,应用程序确实经常检查健康状况。

原因很多,但通常每个VM都会在您指定的重复间隔时被3 * 2个不同的运行状况检查命中(默认情况下,非常激进,1秒)。其原因是2种类型的健康检查(autohealer和LB one),其中3种是出于可用性原因。

话虽如此,我们目前正在开发一种新形式的运行状况检查,这些检查将很快发布,并且应该修复现有运行状况检查行为的这个问题和其他问题(至少使默认值更易于管理并提供更多调优选项)给用户)。

敬请关注!

答案 1 :(得分:2)

我没有根本问题的解决方案。但是,如果垃圾邮件使得无法将日志用于其预期目的,就像对我来说一样,这是一个解决方法:

  1. 启用“高级日志过滤器”(Stackdriver日志记录中搜索字段旁边的微小向下箭头)

  2. 将此添加到搜索查询

    NOT textPayload : (health)

答案 2 :(得分:0)

I also run NodeJS in GAE Flex env. Health checks were also spamming the server log. The following few things helped me in reducing them:

  1. Although the google documentation ( https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#health_checks)的innertext表示不需要运行健康检查配置,我无论如何都要明确设置它们以降低频率健康检查电话。
  2. 使用“高级日志过滤器”删除运行状况检查日志,如果它们过于分散注意力,则会显示。
  3. Google文档(https://cloud.google.com/appengine/docs/flexible/nodejs/how-instances-are-managed)表示不需要为健康检查实现处理程序,我还是明确地实现了它。我在express.js服务器中为“/ _ah / healthcheck”端点添加了一个处理程序,并将路径放在app.js文件的顶部,因此立即响应了healthcheck请求。这有助于减少由于健康检查请求进入快速应用程序逻辑而导致的一些噪音。

答案 3 :(得分:0)

使用高级过滤器并说“NOT _ah / health”。

删除nginx.request日志也会有所帮助。