【问题标题】:Multiple Sidekiq Processes on a single dyno单个测功机上的多个 Sidekiq 进程
【发布时间】:2020-08-12 04:33:05
【问题描述】:

我在 Heroku 上的 Rails 应用程序有一个 Procfile,它在我的 dyno 上启动一个 Sidekiq 进程

worker: bundle exec sidekiq -C config/sidekiq.yml

是否可以在同一个测功机上启动多个 sidekiq 进程?

我的组织有一个大型测功机,其中有很多我们没有使用的内存。在降级 dyno 之前,我想知道是否可以通过运行多个 Sidekiq 进程来使用它。

【问题讨论】:

    标签: heroku sidekiq


    【解决方案1】:

    Sidekiq Enterprise's Multi-Process 功能使这变得微不足道。

    【讨论】:

      【解决方案2】:

      一种选择是使用像 https://github.com/ochinchina/supervisord 这样的主管来运行 Sidekiq

      将二进制文件添加到您的存储库(例如 bin/supervisord)并添加一个配置文件和一个 Procfile 条目。

      对于 8 核的测功机,您的配置可能如下所示:

      [program:sidekiq]
      command = bundle exec sidekiq -e ${RACK_ENV:-development} -C config/sidekiq_large.yml
      process_name = %(program_name)s_%(process_num)s
      numprocs = 8
      numprocs_start = 1
      exitcodes = 0
      stopsignal = TERM
      stopwaitsecs = 40
      autorestart = unexpected
      stdout_logfile = /dev/stdout
      stderr_logfile = /dev/stderr
      

      然后在你的 Procfile 中:

      worker_large: env [...] bin/supervisord -c sidekiq_worker_large.conf
      

      确保调整 Sidekiq 并发设置。

      【讨论】:

        【解决方案3】:

        还有一个开源的第三方 gem 可以做到这一点,而无需为 Sidekiq Enterprise 付费。没用过,不知道效果如何,不过看起来不错。

        https://github.com/vinted/sidekiq-pool

        它没有任何最近的提交或许多 github star,但可能工作正常?

        这是另一个,警告你它正在进行中的未完成工作,但只是为了比较:

        https://github.com/kigster/sidekiq-cluster

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-07
          • 2013-01-23
          • 2014-02-07
          • 1970-01-01
          • 2017-04-27
          • 1970-01-01
          相关资源
          最近更新 更多