2017-03-16 119 views
23

我已经部署使用以下app.yaml配置上的谷歌应用程序引擎的Flex运行时运行的应用程序的NodeJS:谷歌App Engine的健康检查垃圾邮件的应用程序

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的健康检查应打/_ah/health端点每20秒钟一次。不过我注意到,我的应用程序越来越每秒这些健康检查多次发送垃圾邮件,即使该应用程序与200状态代码回应说:

enter image description here

任何想法,为什么发生这种情况?

+1

@DanCornilescu修复它 –

+1

运行多少个实例? –

+1

@DanCornilescu一个实例 –

回答

13

不幸的是,它似乎就像我们的文档有一个错误。今天的确,应用程序确实经常在相当频繁的基础上进行健康检查。

原因是许多倍,但一般每个VM将由3个* 2不同的健康检查在指定的重复间隔被击中(默认情况下,非常积极的,1秒)。其原因是两种类型的健康检查(autohealer和LB的)和3个可用性原因。这就是说,我们目前正在研究一种健康检查的新形式,将很快发布,并且应该解决这个问题和其他问题与现有的健康检查行为(至少使默认更易于管理和给予更多的调整给用户的选项)。

敬请期待!

+2

是否有任何[公共问题](https://issuetracker.google.com/issues?q=componentid:187191%2B)跟踪此社区可以更新的新功能/更改? – Nicholas

+0

这个问题的跟踪错误是什么,我们什么时候可以期待修复?此错误是猖獗https://stackoverflow.com/questions/41732767/google-cloud-app-engine-pinging-my-server-despite-disabling-health-check https://stackoverflow.com/questions/30238547/log启动应用程序引擎实例https://stackoverflow.com/questions/41333978/app-engine-flexible-environment-java-servlet-getting-too-many-ah-health-reques https ://stackoverflow.com/questions/38604089/specify-google-app-engine-health-check-endpoint –

+0

因此,目前建议使用[“更新的健康检查”](https://cloud.google.com/ AppEngine上/文档/灵活/的NodeJS /配置,你的应用程序内与 - 应用程序 - YAML#updated_health_checks)?按照文档,这是测试版,“传统健康检查”仍然是支持,最可靠的解决方案,我们应该使用它们,除非我们需要新功能。但传统的健康检查似乎没有按照文件进行工作。 – aldel

0

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

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

  2. 这个添加到搜索查询

    NOT textPayload : (health)

0

我在GAE的Flex ENV也跑的NodeJS。 运行状况检查也发送垃圾邮件服务器日志。下面的几件事情让我减少他们:

  1. 虽然谷歌文档(https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#health_checks)说不需要健康检查的配置,我将它们明确地反正降低健康检查调用的频率。
  2. 使用“高级日志过滤器”可以将健康检查日志记录从显示中删除,看他们是否过于分心。
  3. 谷歌文档(https://cloud.google.com/appengine/docs/flexible/nodejs/how-instances-are-managed)表示不需要为健康检查实现处理程序,我明确地实现了它。我在express.js服务器中为“/ _ah/healthcheck”端点添加了一个处理程序,并在app.js文件的顶部添加了路由,以便立即响应健康检查请求。这有助于减少健康检查请求进入快速应用程序逻辑所导致的噪音。
0

使用先进的过滤器,并说 “不_ah /健康”。

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