Heroku上Rails应用程序中的随机超时异常

Dev*_*vin 11 timeout ruby-on-rails heroku

我在Heroku上托管了一个Rails 3.2应用程序,每天在Rails应用程序中获得2-3次超时.这些不是 H12请求超时,而是在Rails堆栈中某处发生的超时.因此,它们实际上会在网站上生成异常并显示在我的Airbrake日志中.

超时发生似乎是完全随机的; 有时它在Formtastic之类的宝石中,或在HAML视图中,或在ActiveRecord代码中.你可以在这里看到一些回溯的例子:https://gist.github.com/dpmccabe/5238273

这个站点没有太多流量,并且在两个动态游戏中运行良好(尽管由于Adept Scale附加组件它们会自动扩展).HTTP_X_HEROKU_QUEUE_WAIT_TIME标头通常是低或零,所以我不认为这是一个路由问题.我甚至尝试从Thin切换到Unicorn没有效果(我的unicorn.rb显示在上面的要点).

这些超时异常似乎在整个应用程序中随机发生的事实并没有让我继续下去.我确实有New Relic,但我不确定如何调试这个.有任何想法吗?

dpa*_*luy 0

根据Heroku 开发中心的说法,如果请求完成时间超过 30 秒,路由器将终止该请求。您可以使用机架超时 gem来查找瓶颈。只要让你的超时时间少于 30 秒即可

Rack::Timeout.timeout = 15 # seconds
Run Code Online (Sandbox Code Playgroud)

如果您有多个并行请求,请考虑使用Unicorn