【问题标题】:Rails, Heroku, Unicorn & Resque - how to choose the amount of web workers / resque workers?Rails、Heroku、Unicorn 和 Resque - 如何选择网络工作者/resque 工作者的数量?
【发布时间】:2012-07-09 23:44:05
【问题描述】:

我刚刚切换到在 Heroku 上使用 Unicorn。我还将从 delay_job 切换到 resque 并使用 http://bugsplat.info/2011-11-27-concurrency-on-heroku-cedar.html 中描述的设置

我不明白的是 config/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 中产生六个进程:1 个 unicorn master、3 个 unicorn web workers、1 个 resque worker、1 个 resque child worker,当它实际处理工作时”

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

假设我想增加 resque 工人的数量 - 我会改变什么?

【问题讨论】:

    标签: ruby-on-rails heroku resque unicorn


    【解决方案1】:

    我认为,如果您运行该块,则您的 unicorn master 已经在运行,再加上您在文件顶部指定的 3 个网络工作者,然后下面的块启动一个尚未启动的 Resque 工作者。

    我猜 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 以及它如何选择处理给你更多的工人。

    【讨论】:

    • 谢谢 - 我得试试看会发生什么。如果我用 2 个 dynos 运行你在 Heroku 上编写的代码,会产生:1 个独角兽大师、6 个独角兽网络工作者、1 个 resque 工作者、4 个 resque 童工吗?
    • @mind.blank 不,应该是 1 个独角兽大师,3 个独角兽网络工作者,2 个 resque 工作者,2 个 resque 童工。工作进程将保持不变,但 Resque 必然会为每个“正常”工作进程生成一个 child 工作进程(我想,我会仔细检查)。
    • @mind.blank 我对子进程的看法是正确的。阅读“分叉”部分:github.com/defunkt/resque
    • 在我添加的链接上写着 This will actually result in six processes in each web dyno - 我认为每个 dyno 都会初始化一个独角兽主机,这反过来又会产生其他进程?
    • 是的,但是当您使用我提供的代码时,每个 web dyno 将有 8 个进程,而不是 6 个。(新的 Resque 工作人员额外增加 2 个。)
    猜你喜欢
    • 2021-04-26
    • 2015-08-19
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多