我们可以拥有的Sidekiq工人数量的上限是多少?

时间:2016-01-06 05:11:01

标签: ruby sidekiq

我是sidekiq的新手,我的要求是可以有多个高优先级的作业,就像登录系统的用户数一样多。让每个用户在他的工作被处理后很快就会收到通知。

我有一个sidekiq守护进程以50的并发运行,所以我一次只能处理50个作业?我已经读过wiki个状态,我们应该运行多个sidekiqs。

  1. 要运行的sidekiqs数量的上限是多少?
  2. 我如何才能将登录的用户数与并发工作人员数相匹配?
  3. 我是否可以使用技术堆栈来启动这些工作人员?像独角兽一样拥有一批工人?我甚至可以将独角兽与sidekiq一起使用吗?

1 个答案:

答案 0 :(得分:4)

  

要运行的sidekiqs数量的上限是多少?

每个处理器核心需要一个Sidekiq的 max 。如果你有一个双核处理器,那么2 Sidekiqs。但是,如果您的服务器还在执行其他操作,例如运行Web服务器,则需要为此保留一些内核。

  

我如何才能将登录的用户数与并发工作人员数相匹配?

使用Sidekiq,您可以预先创建线程。你本质上有一个X空闲线程的线程池,如果有大量的工作进入,它随时可以部署。你需要创建尽可能多的线程作为你认为你将随时拥有的最大工作数量。但是,由于性能原因(在为线程分配的大量线程significantly cuts into the CPU time之间进行实际工作的时间之间切换的时间量),每个核心超过50个线程并不是一个好主意。

  

我是否可以使用技术堆栈来启动这些工作人员?像独角兽一样拥有一批工人?我甚至可以将独角兽与sidekiq一起使用吗?

你不能使用Unicorn。你需要一些过程监督员到Sidekiq的handle starting/restarting。他们的wiki推荐使用Upstart或systemd,但我发现Supervisor非常好用,并且设置起来非常简单。