【问题标题】:Can Sidekiq take advantage of multiple CPU cores?Sidekiq 可以利用多个 CPU 内核吗?
【发布时间】:2014-04-13 20:08:49
【问题描述】:

我是 Sidekiq 的新手,我将它与 Amazon EC2 实例上的 Ruby 一起使用,以使用 ImageMagick 和图像来完成一些工作。

在运行它时,我意识到每个工作人员都在同一个核心上运行。我使用 EC2 c3.2xlarge 机器,它们有 8 个内核。它显示 CPU 使用率为 15%,但一个内核使用 100%,其他内核使用 0%。

Sidekiq 可以为不同的工作人员使用不同的 CPU 内核吗?如果可以,这种低效率是由 ImageMagic 造成的吗?我怎样才能让它使用其他内核?

【问题讨论】:

  • 您运行的是哪个版本的 Ruby? 1.8 卡在单核中。 Ruby 的线程模型正在发生变化,但目前它存在一些限制,无法提供完整的线程,就像我们在 Java 或其他语言中看到的那样。请参阅 sitepoint.com/threads-ruby 中的“不同 Ruby 版本中的线程类型”部分以获得很好的总结。
  • 我使用的是 ruby​​ 版本 1.9.3 。我想用 2.0.0 但是 elasticbeanstalk 还不支持

标签: ruby amazon-ec2 imagemagick sidekiq


【解决方案1】:

如果您想通过 MRI 使用多个内核,则需要启动多个 Sidekiq 进程;为 sidekiq 实例配置多个线程是不够的。

因此,如果您想使用全部 8 个内核,您将启动 8 个进程。它们都将来自同一个队列,因此无需担心作业会被多次处理。

【讨论】:

  • 所以如果我理解正确,我基本上需要为 8 个内核执行 bundle exec sidekiq,它只会读取相同的 config/sidekiq.yml?
猜你喜欢
  • 2016-12-17
  • 2019-05-12
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多