原来这是一种请求排队。有时,该网络服务器很忙,并且由于heroku只是将随机传入的请求随机路由到任何dyno,那么我可能最终会排在dyno后面的队列中,该队列由于例如以下原因而完全卡住了。数据库问题。奇怪的是,这在 new relic 中很难注意到(在查看图表中的资源时取消选中所有其他资源是个好主意,然后队列突然出现)
2013 年 2 月 21 日编辑:事实证明,它在 Newrelic 中不那么引人注目的原因是,它没有被测量!http://rapgenius.com/Lemon-money-trees-rap-genius-response-to-heroku-lyrics http://rapgenius.com/Lemon-money-trees-rap-genius-response-to-heroku-lyrics
我们发现这非常令人沮丧,最终我们放弃了 Heroku,转而使用专用服务器。这使我们以 1/10 的成本获得了 20 倍的性能提升。此外,我必须说,我们对 Heroku 感到失望,Heroku 在发生这种情况时否认缓慢是由于他们的基础设施造成的,尽管我们对此表示怀疑并多次强调了这一点。我们甚至得到了这样的答案:
Heroku 2012 年 8 月 28 日:“如果您没有在 New Relic 中看到请求排队或其他缓慢的报告,那么这可能不是服务器端问题。Heroku 的内部路由应该花费
此外,我们采访了 Newrelic,他们似乎也没有意识到这个问题,尽管他们自称与 Heroku 有着非常密切的工作关系。
新遗迹 2012 年 8 月 29 日:“看来导致这种情况的原因是在 Ruby 代理的可见性开始之前发生的。代理记录的队列时间是从请求进入测功机的时间开始的,因此速度减慢是在那之前发生的。”
最重要的是,我们最终花了很多时间来优化代码,而这并不是真正的瓶颈。另外,为了提高我们的性能,我们还使用了太高的测功机规模,但我们真正从中得到的唯一好处是从 Heroku 和 Newrelic 获得了更大的收益 - 不酷。我很高兴我们改变了。
附言。当时甚至存在一个错误,导致 newrelic pro 在所有 dynos 上收费,即使我们(根据 Newrelic 自己的建议)禁用了对后台工作进程的监控。双方花了很长时间和很多电子邮件才承认错误。
聚苯硫醚。如果您不知道当前正在进行的讨论,那么这里是链接http://rapgenius.com/James-somers-herokus-ugly-secret-lyrics http://rapgenius.com/James-somers-herokus-ugly-secret-lyrics
2013 年 2 月 26 日编辑Heroku 刚刚宣布 https://blog.heroku.com/archives/2013/2/21/better_queuing_metrics_with_updated_new_relic_add_on在他们的时事通讯中,Newrelic 发布了update http://blog.newrelic.com/2013/02/21/using-new-relic-on-heroku-read-how-our-new-ruby-agent-measures-queue-time/这显然可以让我们了解 Heroku 的情况。
2013 年 8 月 4 日编辑Heroku 刚刚发布了FAQ https://blog.heroku.com/archives/2013/4/3/routing_and_web_performance_on_heroku_a_faq超出主题