Sidekiq在单个heroku dyno中运行多个作业?

时间:2017-05-01 17:58:42

标签: multithreading heroku concurrency sidekiq

我注意到在我的一些sidekiq工作者中,他们似乎在一个dyno中运行多个进程(同时处理多个作业)(日志会暗示这一点)。

在不使用群集(企业功能)的情况下,可以同时在一个dyno中同时运行多个进程?

我已将所有设置为默认值而不使用群组,因此每个sidekiq worker都使用25个线程。究竟所有这些线程用于什么,但是,我不知道。任何人都可以帮助我理解这是如何转化为在单个Heroku dyno中工作的并发工作者吗?

1 个答案:

答案 0 :(得分:1)

您正在看到一个Sidekiq进程,其中有25个线程同时运行作业。每个线程都将执行一个作业,因此您最多可以同时运行25个作业。

没有swarm,每个dyno只能运行一个进程。

您可以使用swarm在dyno中运行多个进程,但有多少进程取决于应用程序的内存要求以及dyno中的内核数量。

这将为您提供100个工作线程:4 * 25。

SIDEKIQ_COUNT=4 bundle exec sidekiqswarm -e production -c 25