首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Heroku -为什么在将发布推到Heroku时我会得到错误的R12 (退出超时)?

Heroku -为什么在将发布推到Heroku时我会得到错误的R12 (退出超时)?
EN

Stack Overflow用户
提问于 2014-11-21 02:02:39
回答 1查看 7.9K关注 0票数 14

偶尔,每当我在收到以下错误后不久将发布推到Heroku (我运行的是2 512‘m dynos):

代码语言:javascript
运行
复制
2014-11-21 00:38:30.216
188 <45>1 2014-11-21T00:38:29.163459+00:00 heroku web.2 - - Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM

我使用的是独角兽应用服务器,不幸的是,每512 my的dyno只有一个独角兽工人(因为在它的峰值,我的应用RSS是320 my是的,去计算,一些膨胀正在发生)。不确定这是否有帮助,但我在Cedar14上启用了预引导。UNICORN_WORKERS设置为1。

这是我的独角兽装置。我应该关注这个错误吗?

当我们讨论这个主题时,对于我的2个dynos来说,db池大小15太大了(我正在使用Postgres标准,它允许最多120个并发连接)。

代码语言:javascript
运行
复制
worker_processes Integer(ENV['UNICORN_WORKERS'] || 2)

timeout Integer(ENV['UNICORN_TIMEOUT'] || 25)

preload_app true

before_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
    Process.kill 'QUIT', Process.pid
  end

  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.connection.disconnect!
  end
end

after_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
  end

  # other settings
  if defined?(ActiveRecord::Base)
    config = ActiveRecord::Base.configurations[Rails.env] || Rails.application.config.database_configuration[Rails.env]
    config['reaping_frequency'] = Integer(ENV['DB_REAPING_FREQUENCY'] || 10)
    config['pool'] = ENV['DB_POOL'] || 15
    ActiveRecord::Base.establish_connection(config)
  end

end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-21 18:52:25

Heroku在部署时有一条规则,基本上是这样的:

  • 当您的dyno要重新启动时,Heroku将很好地要求您的进程关闭自己。这让他们有机会做一些很好的事情,比如关闭打开的数据库连接等等。
  • 如果您的进程没有在10秒内自动关闭,您将得到上面的错误,Heroku将强制关闭您的进程以重新启动它。

这样做是为了确保您不会有一个庞大的账单运行,因为您的一个进程从来没有退出。

在您的情况下(我在这里推测),您有很多开放的DB连接,关闭它们需要超过10秒,因为:

  • 您有一些DB延迟。
  • 您的DB承受着其他东西的负担。
  • 您的应用程序无法在<10秒内关闭那么多。

总的来说,这没什么大不了的。这个问题随着时间的推移会自行解决,所以我不会担心它。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27052990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档