我想运行多个服务器,每个服务器运行一个带有多个线程的Sidekiq进程。我的产品发布了几种类型的作业,但是一种类型的作业通常需要很长时间,并且会给服务器的CPU和内存带来很大的负载。
当这种情况发生时,作业服务器将关闭,从而无法运行其他类型的作业。因此,我希望在不同的服务器上运行高负载作业和其他作业,同时改进作业处理。
有可能用Sidekiq做到这一点吗?
如果是,我如何为每个作业分配Sidekiq服务器?
我正在使用ActiveJob和Sidekiq,Rails和Sidekiq都是最新的。
我想运行多个服务器,每个服务器运行一个带有多个线程的Sidekiq进程。我的产品发布了几种类型的作业,但是一种类型的作业通常需要很长时间,并且会给服务器的CPU和内存带来很大的负载。
当这种情况发生时,作业服务器将关闭,从而无法运行其他类型的作业。因此,我希望在不同的服务器上运行高负载作业和其他作业,同时改进作业处理。
有可能用Sidekiq做到这一点吗?
如果是,我如何为每个作业分配Sidekiq服务器?
我正在使用ActiveJob和Sidekiq,Rails和Sidekiq都是最新的。
1条答案
按热度按时间vd8tlhqk1#
是的,您可以使用主机特定的队列,这是我的博客上记录的一种技术。您可以在以CPU密集型计算机的主机名命名的队列中创建作业:
这两个是等效的,但是
set
允许您动态地将作业从其默认队列重定向到目标。然后你将在每台机器上启动Sidekiq,监听它自己的主机队列:
维奥拉
https://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues/