Rails并发和activejobs

时间:2017-06-22 15:06:12

标签: ruby-on-rails sidekiq rails-activejob

以下是我在ActiveJobs上的一些问题:

  1. 说我已经通过ActiveJobs在sidekiq上的作业队列中排队了多个作业。在我的EC2上,我设置puma有4个工人,每个工作5个线程。这是否意味着最多可同时运行20个并发作业?当每个线程空闲并且只是处理它时,它们是否会获取排队的作业?我尝试了这个设置,但似乎它仍然是串行处理 - 一次一个作业。我需要做更多设置吗?

  2. 关于并发性 - 我如何才能设置更多的EC2实例来解决作业队列本身?

  3. 关于队列本身 - 我们有办法从Rails中管理/查看队列吗?或者我应该依靠sidekiq的网络界面来查看队列?

1 个答案:

答案 0 :(得分:1)

Sidekiq有良好的Wiki。至于你的问题:

  1. Sidekiq(以及其他后台工作实施)作为queued jobs使用 其中producer是您的Rails应用程序,Queue - Redis和consumer - Sidekiq工作人员。这三个实体都是完全独立的应用程序,可以在不同的服务器上运行。因此,Puma和Rails应用程序都不会影响Sidekiq的并发性。
  2. Sidekiq并发描述远远超出了SO答案。您可以通过"缩放Sidekiq工作人员来搜索大型帖子"。简而言之:是的,您可以运行单独的EC2实例并设置Redis并调整Sidekiq工作计数,每个工作者的并发性,ruby运行时,队列并发性和优先级等等。
    已编辑:Sidekiq有每个工作人员配置(通常是sidekiq.yml)。但是,工作人员的数量由Debian&#upstart等系统工具管理。或者您可以购买具有许多功能的Sidekiq Pro / Enterprise(如sidekiqswarm)。
  3. 来自wiki:Sidekiq API