【问题标题】:Google App Engine health checks spamming appGoogle App Engine 运行状况检查垃圾邮件应用
【发布时间】:2017-08-08 01:51:03
【问题描述】:

我使用以下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 状态码响应:

知道为什么会这样吗?

【问题讨论】:

  • @DanCornilescu 修复了它
  • 运行了多少个实例?
  • 顺便说一句 - 更好地使用图像工具 - 它允许内联图像。
  • FWIW,该特定配置值的解释方式不一致,也许尝试不同的值?见stackoverflow.com/questions/42886929/…
  • 我也遇到了问题,就我所见,一团糟

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


【解决方案1】:

不幸的是,我们的文档似乎确实存在错误。今天,确实,应用程序确实会非常频繁地进行健康检查。

原因有很多,但通常每个 VM 都会在您指定的重复间隔(默认情况下,非常激进,1 秒)内受到 3 * 2 次不同的运行状况检查。这样做的原因是 2 种类型的健康检查(autohealer 和 LB 的),并且出于可用性原因各 3 种。

话虽如此,我们目前正在研究一种新的健康检查形式,该形式很快就会发布,应该可以解决现有健康检查行为的这个问题和其他问题(至少使默认值更易于管理并提供更多调整选项给用户)。

敬请期待!

【讨论】:

【解决方案2】:

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

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

  2. 将此添加到搜索查询

    NOT textPayload : (health)

【讨论】:

    【解决方案3】:

    我还在 GAE Flex 环境中运行 NodeJS。 健康检查也向服务器日志发送垃圾邮件。以下几件事帮助我减少了它们:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-11-30
        • 1970-01-01
        • 2018-08-08
        • 1970-01-01
        • 2015-01-12
        • 2018-06-05
        • 2011-01-24
        • 2016-06-10
        • 1970-01-01
        相关资源
        最近更新 更多