如何在Sidekiq中为CPU / RAM昂贵的工作决定并发数?

时间:2014-06-29 23:59:40

标签: ruby-on-rails heroku sidekiq

我在Heroku中有一个Rails 4应用程序,它使用Sidekiq作为后台作业处理器。这项工作基本上做了两件事(CPU / RAM昂贵):

默认情况下,Sidekiq每个进程的并发性为25个线程,但如果我有并发性,那么我会超过我的工作dyno的内存配额。当每个进程执行10个线程时,我或多或少地得到这个:

Process running mem=936M(182.8%)
Error R14 (Memory quota exceeded)

所以,我可以将线程数减少到2或3,以确保我永远不会'克服了dyno允许的内存,但有时候工作者可以有足够的内存来拥有更多的线程。

我的问题是:Sidekiq有没有办法动态修改其并发性,具体取决于其进程使用的内存百分比?如果没有,有关如何在Heroku中找到运行此阈值的良好阈值的任何建议吗?

1 个答案:

答案 0 :(得分:3)

  1. 不幸的是没有。
  2. Sidekiq在启动时通常需要200MB的Rails应用程序。除此之外的任何内存使用都是由于您的应用程序代码。运行像PhantomJS这样的完整浏览器可能会占用大量内存。你最好的选择是升级你的dyno大小。