我在Heroku上安装一个Rails 3.2应用程序,每天在Rails应用程序中获得2-3次超时.这些不是H12请求超时,而是在Rails堆栈中发生的超时.因此,他们实际上在网站上产生异常并出现在我的Airbrake日志中.
似乎是超时发生的完全随机;有时它在一个像Formtastic这样的宝石,或在一个HAML视图内,或在ActiveRecord代码.你可以在这里看到一些回溯的例子:https://gist.github.com/dpmccabe/5238273
这个网站没有太多的流量,运行良好,在两个dynos(虽然他们自动放大,由于Adept Scale附加). HTTP_X_HEROKU_QUEUE_WAIT_TIME标头通常为低或为零,所以我不认为这是一个路由问题.我甚至尝试从Thin切换到Unicorn,没有任何效果(我的unicorn.rb在上面的要点中显示).
事实上,这些超时异常似乎在整个应用程序中随机发生,这并不意味着我继续下去.我有新的遗物,但我不知道如何去调试这个.有任何想法吗?
解决方法
我在我的应用程序主机上遇到了同样的问题.
我检查了日志,发现很少的请求需要超过30秒的时间来处理,这导致了heroku上的超时错误.
在我的情况下,打印到日志的问题,我有一个分段服务器,它有大量的输入和输出数据打印到服务器日志,花费了超过30秒的时间打印,heroku将假设请求仍在进行中,即使在从远程api收到响应,因为它还没有完成将数据打印到日志中.
所以我删除了打印输入的所有print语句(输入由代码构造的xml数据),并输出(从api接收的xml数据)到日志.
>所以我建议你检查日志,看看请求是否需要超过30秒的时间来处理
>检查是否打印需要时间在日志上打印的数据(用于调试目的).
再次,这可能不是您的问题的答案,但这是我如何解决我的.希望有帮助!