【问题标题】:Unicorn & Heroku - is a different configuration for each dyno possible?Unicorn & Heroku - 每个测功机都有不同的配置吗?
【发布时间】:2012-07-13 16:17:16
【问题描述】:

我目前正在 2 个 Heroku dynos 上运行我的应用程序。到目前为止,我需要添加类似于 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

我有几个不同的后台作业要处理,有些需要单线程运行,有些需要并发运行。这种配置的问题在于,在两个 Unicorn 实例上,它将产生完全相同的 resque worker(相同的队列等)。

如果我可以更改每个工作进程的队列类型,或者甚至让一个实例运行 resque 工作进程而另一个实例运行 sidekiq 工作进程,这将大大简化一切。

这可能吗?

【问题讨论】:

    标签: ruby-on-rails heroku resque sidekiq


    【解决方案1】:

    也许您混淆了 unicorn worker_processes 和 Heroku worker?

    您可以使用您的 Procfile 为每个队列启动 Heroku 工作程序,并使用一个独角兽进程来处理 Web 请求。

    试试这个设置

    /config/unicorn.rb

    worker_processes 4 # amount of unicorn workers to spin up
    timeout 30         # restarts workers that hang for 30 seconds
    

    /过程文件

    web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
    worker: bundle exec sidekiq
    worker: bundle exec rake resque:work QUEUES=scrape,geocode,distance,mailer
    

    【讨论】:

    • 抱歉回复晚了。问题是通过上述设置,您只需支付 1 个 dyno(1 个免费),但可以获得 6 个 Web 进程 + 2 个工作人员。请参阅此处:bugsplat.info/2011-11-27-concurrency-on-heroku-cedar.html 使用您的设置,每个工人是否都算作您需要支付的单独的测功机?
    猜你喜欢
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 2013-03-13
    相关资源
    最近更新 更多