H12错误触发了Heroku上不断升级的内存下降螺旋

时间:2018-07-24 12:41:15

标签: ruby-on-rails heroku puma

我已经调试了好几个星期,但收效甚微,所以我想知道是否有人有更多的运气,这可能会在将来极大地帮助其他遇到相同问题的人。

我们的设置:

  • Ruby 2.3.7
  • 轨4.0.12
  • 彪马3.11.4
  • 机架超时0.4.2
  • Heroku 2X测功机

每时每刻,测功机都会受到一系列H12错误(noisy neighbor?)的打击。发生这种情况时,内存会逐渐升级,从而使测功机无法使用,直到重新启动。

enter image description here

即使H12错误消退后,内存仍在不断升级:

enter image description here

我们的rack-timeout已设置为30秒后超时。尽管我无法果断地证明这是might be的原因/原因。 IO块中的超时也是possibility

如果您以前看过这些并且知道要寻找什么,我很乐意提供NewRelic或Papertrail的更多信息。谢谢您的任何想法!

1 个答案:

答案 0 :(得分:0)

看到H12错误表明Heroku正在 机架超时之前使请求超时。自that is Heroku's timeout起,您需要将机架超时设置减少到30秒以内。我建议使用25秒左右的时间。

进行了适当的更改之后,您应该开始看到Rack :: Timeout异常而不是H12错误,并且可以通过查看异常跟踪器中的堆栈跟踪来开始诊断超时的根本原因。

在您确定超时原因之前,我不会调查内存问题。我敢打赌,一旦您知道请求超时的原因并解决了,内存问题也将得到解决。