我刚刚转而在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工作人员的数量 - 我会改变什么?
答案 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以及它如何选择处理给你更多的工人。