503服务不可用但heroku日志显示200

时间:2015-06-11 14:58:12

标签: ruby-on-rails ruby ruby-on-rails-4 logging heroku

我正在拨打昂贵的Heroku Rails服务器电话。 13-15秒后,浏览器中的控制台报告服务不可用503错误。但是,当我检查我的heroku日志时,它会报告:

Completed 200 OK in 45592ms (Views: 220.3ms | ActiveRecord: 33457.5ms)

其他时候,heroku日志报告内存超出配额。以下是此示例。

2015-06-11T15:17:20.238285+00:00 app[web.1]: Completed 200 OK in 81881ms (Views: 201.6ms | ActiveRecord: 18021.2ms)
2015-06-11T15:17:33.482930+00:00 heroku[web.1]: Process running mem=841M(164.4%)
2015-06-11T15:17:33.482930+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2015-06-11T15:17:53.147570+00:00 heroku[web.1]: Process running mem=841M(164.4%)
2015-06-11T15:17:53.147679+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2015-06-11T15:17:59.751540+00:00 app[web.1]: E, [2015-06-11T15:17:59.695813 #3] ERROR -- : worker=2 PID:13 timeout (121s > 120s), killing
2015-06-11T15:17:59.916750+00:00 app[web.1]: E, [2015-06-11T15:17:59.906435 #3] ERROR -- : reaped #<Process::Status: pid 13 SIGKILL (signal 9)> worker=2
2015-06-11T15:18:02.487428+00:00 app[web.1]: I, [2015-06-11T15:18:02.427293 #16]  INFO -- : worker=2 ready

为什么在控制台报告503时会报告已完成200?

3 个答案:

答案 0 :(得分:2)

这里有两件不同的事情:

  • 您的应用
  • heroku负载均衡器

在这种情况下,负载均衡器会看到请求花费的时间过长并向您发送503.在后面,服务处理请求并返回完成200。

请参阅:

https://devcenter.heroku.com/articles/limits

https://devcenter.heroku.com/articles/request-timeout

答案 1 :(得分:0)

Heroku没有为error-code = H10提供更多信息。简单来说,你的应用程序代码/配置出了问题。要查看出现了什么问题,请运行heroku run rails console,您将能够看到有助于您解决错误的错误详细信息。无需使用日志。 heroku run rails console是一个很大的帮助

答案 2 :(得分:0)

这是我使用Node时发生的。我设置了30秒钟的超时时间,并且以前使用HTTP:503。然后我才知道是造成问题的原因是超时。我将超时更改为<30秒,并且工作正常。也许是因为Heroku使用了负载均衡器。 谢谢。