单个 dyno 上的多个 Sidekiq 进程

Multiple Sidekiq Processes on a single dyno

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

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

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

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

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

一个选择是 运行 Sidekiq 和 https://github.com/ochinchina/supervisord

这样的主管

将二进制文件添加到您的存储库(例如 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 并发设置。

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

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

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

这是另一个,警告您这是未完成的工作,但只是为了比较:

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