您能否确定应用程序中运行的工作人员数量

时间:2013-08-03 21:48:18

标签: heroku sidekiq heroku-postgres

为了将我们的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,那就太好了。

模拟所有可能发生的事情(工人上升或下降,改变工人数量等),这似乎让我们摆脱了最初的问题;我们的工作人员将使用所有数据库池连接,然后在启动时开始崩溃。

1 个答案:

答案 0 :(得分:1)

heroku-api gem应该为您提供此服务。 https://github.com/heroku/heroku.rb

您应该在此处找到您的API密钥:https://dashboard.heroku.com/account

require 'heroku-api'
heroku = Heroku::API.new(api_key: API_KEY)

当前流程总数:

heroku.get_ps('heroku-app-name').body.count

(如果您的Procfile / Heroku应用程序中定义了不同的种类,您应该能够解析此数据以获取工作人员总数...或特定类型工作人员的数量)