单个dyno

时间:2016-11-16 01:37:55

标签: heroku sidekiq

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

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

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

一种选择是与https://github.com/ochinchina/supervisord之类的主管一起运行Sidekiq

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

对于具有8核的dyno,您的配置应如下所示:

[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并发设置。

答案 2 :(得分:0)

还有这种开源第三方gem可以做到这一点,而不必为Sidekiq Enterprise付费。我没有使用过,不知道它的工作原理如何,但是看起来不错。

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

它没有任何最近的提交或很多github星星,但可能工作得很好?

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

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