Rails,Heroku,Unicorn& Resque - 如何选择Web worker / resque worker的数量?

时间:2012-07-10 13:25:09

标签: ruby-on-rails heroku resque unicorn

我刚刚转而在Heroku上使用Unicorn。我也将从delayed_job切换到resque并使用http://bugsplat.info/2011-11-27-concurrency-on-heroku-cedar.html

中描述的设置

我不明白这是怎么配置/ unicorn.rb:

worker_processes 3
timeout 30

@resque_pid = nil

before_fork do |server, worker|
  @resque_pid ||= spawn("bundle exec rake " + \
  "resque:work QUEUES=scrape,geocode,distance,mailer")
end

转换为:

  

“这实际上会导致每个web dyno中有6个进程:1个unicorn master,3个unicorn web worker,1个resque worker,1个resque child worker,当它实际处理作业时”

有多少工人会实际处理后台工作? 1还是2?

让我们说我想增加resque工作人员的数量 - 我会改变什么?

1 个答案:

答案 0 :(得分:1)

我认为如果你运行那个块,你的unicorn master已经运行了,还有你在文件顶部指定的3个web worker,然后下面的块启动一个Resque worker,如果它还没有启动。

我猜测Resque在实际执行工作时会自动启动一个童工。

如果你想要另一个Resque工作人员,你可以做到

worker_processes 3
timeout 30

@resque_pid = nil
@resque_pid2 = nil

before_fork do |server, worker|
  @resque_pid ||= spawn("bundle exec rake " + \
  "resque:work QUEUES=scrape,geocode,distance,mailer")
  @resque_pid2 ||= spawn("bundle exec rake " + \
  "resque:work QUEUES=scrape,geocode,distance,mailer")
end

根据我对Resque的体验,它就像启动上面指定的另一个过程一样简单。我唯一不确定的是Heroku以及它如何选择处理给你更多的工人。