【问题标题】:Rails app hosted on heroku: Error R12 (Exit timeout)在 Heroku 上托管的 Rails 应用程序:错误 R12(退出超时)
【发布时间】:2012-03-28 04:45:14
【问题描述】:

我在 heroku 上托管了一个 Rails 3.1.4 应用程序。我添加了logentries add-on。 我没有触及警报的默认配置,现在我每隔几个小时就会收到一个警报:“退出超时”:

Exit timeout: Heroku/myappname

2012-03-23 11:01:41.723
168 <40>1 2012-03-23T11:01:41+00:00 d. heroku web.1 - - Error R12 (Exit timeout) -> Process failed to exit within 10 seconds of SIGTERM

You are receiving this email because your Logentries alarm "Exit timeout"
has been triggered.

In context:
2012-03-23 11:01:28.878 95 <40>1 2012-03-23T11:01:28+00:00 d. heroku web.1 - - Idling
2012-03-23 11:01:31.740 118 <40>1 2012-03-23T11:01:31+00:00 d. heroku web.1 - - Stopping process with SIGTERM
2012-03-23 11:01:41.723 168 <40>1 2012-03-23T11:01:41+00:00 d. heroku web.1 - - Error R12 (Exit timeout) -> Process failed to exit within 10 seconds of SIGTERM

日志和此电子邮件警报都没有给我任何有用的信息来开始寻找此问题。

我的流量非常低(应用程序仍处于私有测试阶段)。我怀疑是 heroku 关闭了应用程序,而我的应用程序没有按预期响应 SIGTERM 信号。

我在应用程序中没有任何花哨的东西(例如使用 Heroku Scheduler 启动的 rake 任务)。
唯一有点不同寻常的是使用了 gem apn_on_rails,它打开了与 Apple 的 APN 服务器的连接。

您知道是什么原因造成的吗?我应该忽略这个并关闭警报吗?

【问题讨论】:

  • 一方面,这很正常——Heroku 根据需要杀死并启动 Rails。但是,我还没有弄清楚如何停止收到有关此的电子邮件。
  • @TheDoctorWhat:停止接收电子邮件很简单:转到应用程序的日志条目设置,选项卡警报,然后删除退出超时警报。 Heroku 杀死了该应用程序,我对此表示满意。但它似乎希望进程在收到 SIGTERM 信号后 10 秒内关闭,但事实并非如此。这是正常的吗?有什么要改变的吗?
  • 啊,我找到了……它实际上是“事件”而不是“警报”……至少在日志记录的 heroku 界面上。谢谢!

标签: ruby-on-rails heroku alert timeoutexception logentries


【解决方案1】:

如果你使用 webrick 在 Heroku 上运行你的应用程序,你应该切换到使用 'thin':参见 https://devcenter.heroku.com/articles/rails3#webserver

这从我的日志中删除了所有出现的 R12 错误。

【讨论】:

  • Guillaume,如果它对你有用,你应该接受这个答案。我有同样的问题,医生的解决方案正是医生所要求的:)
  • 现在,鉴于最近的嗡嗡声,您可能应该切换到独角兽。 See here.
  • 我正在使用瘦服务器并收到几个此类警报,因此这不是我的解决方案。我很快就会切换到独角兽。
  • 是的,在上个月,它也停止了对我的工作。我可能应该改用独角兽之类的。
  • 我正在使用根据 Heroku 的指南和建议配置配置的 Unicorn,我也遇到了同样的问题。有人知道解决方案吗?
猜你喜欢
  • 2013-07-19
  • 1970-01-01
  • 2015-01-19
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 2022-01-05
  • 1970-01-01
相关资源
最近更新 更多