【问题标题】:How can I dedicate threads to run Sidekiq jobs with Puma or Raptor server?如何使用 Puma 或 Raptor 服务器专用线程来运行 Sidekiq 作业?
【发布时间】:2015-01-20 18:03:51
【问题描述】:

假设我的进程将运行 3 个工作线程,我想将其中的 1 个用于处理 Web 请求,将 2 个用于处理 Sidekiq 后台作业,每个进程都可能是多线程的。是否有一种简单或最佳实践的方法来处理这个问题?我尝试了几种不同的配置,但它们要么给我一个错误,要么根本不处理作业。

我正在使用 Rails 4 和 ActiveJob,但我认为这些点无关紧要。

【问题讨论】:

  • 我觉得你的问题不清楚。您希望您的应用程序运行三个进程,其中一个是 puma/raptor 服务器,其中两个是 sidekiq worker?你看过工头吗?

标签: ruby-on-rails multithreading ruby-on-rails-4 sidekiq puma


【解决方案1】:

您不必从您的 rails 应用程序中处理 sidekiq worker 调度。 Sidekiq 在整个 rails 环境中运行一个单独的进程来管理后台工作人员。每个 Worker 都是一个单独的线程,由 Celluloid Actor 框架提供支持。因此,对于您的设置,您只需执行以下操作:

# start a single puma web server process with min 4 and max 16 Threads
$ bundle exec puma -t 4:16  

# start a single multithreaded sidekiq process,    
# with councurrency settings defined in sidekiq.yml
$ bundle exec sidekiq --pidfile tmp/pids/sidekiq_1.pid 

# start another sidekiq process (if really necessary)
$ bundle exec sidekiq --pidfile tmp/pids/sidekiq_2.pid  

【讨论】:

    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2010-12-17
    • 2013-07-22
    • 2014-10-03
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多