为了将我们的 sidekiq 工作人员适当地扩展到我们的数据库池的大小,我们在我们的配置中提出了一个小公式
sidekiq.rb
Sidekiq.configure_server do |config|
config.options[:concurrency] = ((ENV['DB_POOL'] || 5).to_i - 1) / workers
end
def workers
... the number of workers configured for our project ...
(ENV['HEROKU_WORKERS'] || 1).to_i
end
我们手动设置HEROKU_WORKERS,但如果有一种方法可以从应用程序中询问Heroku API,那就太好了。
取模所有可能发生的事情(工人上升或下降,工人数量的变化等),这似乎让我们摆脱了最初的问题;我们的工作人员将消耗所有数据库池连接,然后在启动时开始崩溃。