【问题标题】:Rails concurrency and activejobsRails 并发和活动作业
【发布时间】:2017-06-22 15:06:11
【问题描述】:

以下是我对 ActiveJobs 的一些疑问:

  1. 假设我通过 ActiveJobs 在 sidekiq 上的作业队列中排队了 n 个作业。在我的 EC2 上,我将 puma 设置为有 4 个工作人员,每个工作人员有 5 个线程。这是否意味着最多 20 个并发作业将同时运行?每个线程是否会在空闲时拿起排队的作业并处理它?我尝试了这个设置,但它似乎仍在串行处理它 - 一次 1 个作业。我还需要做更多设置吗?

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

  3. 关于队列本身 - 我们有没有办法在 Rails 中管理/查看队列?还是我应该依靠 sidekiq 的 web 界面来查看队列?

【问题讨论】:

  • Puma 设置根本不影响 sidekiq。 Sidekiq 有自己的并发设置。

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢你——毕竟我找错了树。 wiki 有所帮助 - 仍在努力,但会先进一步尝试,然后再提出更多问题。同样,知道所有配置都将在 sidekiq 方面至少为我指明了正确的方向。干杯
  • @JoelLim 是的,Sidekiq 具有每个工作人员的配置(通常是 sidekiq.yml)。但是工人的数量是由系统工具管理的,比如 Debian 的 Upstart。或者您可以购买具有许多功能(如 sidekiqswarm)的 Sidekiq Pro/Enterprise。如果对您有帮助,您能否将我的回答标记为已接受?
猜你喜欢
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 2015-07-03
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2015-10-06
相关资源
最近更新 更多