Rails,Heroku,Unicorn&Resque – 如何选择网络工作者/ resque工作者的数量?

我刚刚转向在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 

翻译成:

“这实际上会导致每个网络dyno中的六个进程:1个独角兽大师,3个独角兽网络工作者,1个resque工作者,1个真正正在处理工作的resque童工”

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

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

我想如果你运行那个块,你已经运行了你的独角兽主,加上你在文件顶部指定的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以及它如何选择处理给你更多的工人。