gpt4 book ai didi

ruby-on-rails - 使用 Heroku 推荐的 Unicorn 配置时出现错误 R12(退出超时)

转载 作者:行者123 更新时间:2023-12-03 11:42:49 24 4
gpt4 key购买 nike

我的 unicorn 配置(从 Heroku's docs 复制):

# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 30
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

defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
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

defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end

但是每次重新启动测功机时,我们都会得到:
heroku web.5 - - Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM

Ruby 2.0、Rails 3.2、 unicorn 4.6.3

最佳答案

我们在 Unicorn 上遇到过这样的问题已经有一段时间了。 . .我们也得到了看似随机的超时错误,即使我们从来没有看到太多的负载并且有 4 个 dyno,每个有 4 个 worker (我们从来没有任何请求排队)。即使在 Heroku 的帮助下,我们摆脱这些错误的运气也为 0。即使他们对 Heroku 上 Unicorn 的最佳设置没有 100% 的信心,我也能感觉到。

我们最近才切换到 Puma,到目前为止效果非常好,性能要好得多,而且还没有奇怪的超时。我们切换到 Puma 的其他原因之一是我怀疑我们的一些随机超时来自“慢客户端”。 . . unicorn 不是为处理慢速客户而设计的。

如果我们看到 Puma 继续取得成功,我会告诉你的,但到目前为止一切都很好。假设您的应用程序是线程安全的,则切换非常轻松。

这是我们正在使用的 puma 设置。我们正在使用“集群模式”。

过程文件:

web: bundle exec puma -p $PORT -C ./config/puma.rb

puma.rb:
environment ENV['RACK_ENV']
threads Integer(ENV["PUMA_THREADS"] || 5),Integer(ENV["PUMA_THREADS"] || 5)

workers Integer(ENV["WEB_CONCURRENCY"] || 4)
preload_app!

on_worker_boot do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.establish_connection
end
end

我们目前有 WEB_CONCURRENCY设置为 4 和 PUMA_THREADS设置为 5。

我们没有使用 DB_POOL 的初始化程序,只是使用默认的 DB_POOL 设置 5(因此有 5 个线程)。

我们使用 WEB_CONCURRENCY 的唯一原因因为我们的环境变量名称是这样 log2viz 报告正确的 worker 数量。宁愿叫它 PUMA_WORKERS但无论如何,没什么大不了的。

希望这可以帮助 。 . .如果我们发现 Puma 有任何问题,我们会再次通知您。

关于ruby-on-rails - 使用 Heroku 推荐的 Unicorn 配置时出现错误 R12(退出超时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com