【问题标题】:How to decide concurrency number in Sidekiq for CPU/RAM expensive jobs?如何确定 Sidekiq 中 CPU/RAM 昂贵作业的并发数?
【发布时间】:2014-06-29 23:59:39
【问题描述】:

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

默认情况下,Sidekiq 具有每个进程 25 个线程的并发性,但如果我有这种并发性,我就会超过我的工作人员测功机的内存配额。当每个进程执行 10 个线程时,我或多或少会得到以下信息:

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

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

我的问题是:Sidekiq 是否可以根据进程使用的内存百分比动态修改其并发性?如果没有,关于如何在 Heroku 中找到一个好的阈值来运行它的任何建议?

【问题讨论】:

    标签: ruby-on-rails heroku sidekiq


    【解决方案1】:
    1. 很遗憾没有。
    2. Sidekiq 通常在启动时需要 200MB 的空间,并使用大小合适的 Rails 应用程序。除此之外的任何内存使用都是由于您的应用程序代码造成的。运行像 PhantomJS 这样的完整浏览器会占用大量内存。最好的办法是升级您的测功机尺寸。

    【讨论】:

    • 谢谢 Mike :) PhantomJS 和 RMagick 的混合确实消耗了大量内存。因此,我需要进行研究并确定对我的工作人员来说什么是好的并发数,以避免达到内存限制。
    猜你喜欢
    • 2014-05-09
    • 1970-01-01
    • 2021-10-15
    • 2019-07-30
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2019-07-25
    • 2011-03-21
    相关资源
    最近更新 更多