Heroku上的My Rails应用程序有一个Procfile
,可以在我的dyno上启动单个Sidekiq进程
worker: bundle exec sidekiq -C config/sidekiq.yml
是否可以在同一个dyno上启动多个sidekiq进程?
我的组织有一个大型的dyno,有很多内存,我们没有使用。在降级dyno之前,我想知道是否可以选择通过运行多个Sidekiq进程来使用它。
答案 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星星,但可能工作得很好?
这是另一个,警告您正在进行的工作尚未完成,只是为了比较: