Ruby on rails 非常慢,请稍后调用ActiveJob和Sidekiq
我有一个Ruby on rails 非常慢,请稍后调用ActiveJob和Sidekiq,ruby-on-rails,sidekiq,rails-activejob,Ruby On Rails,Sidekiq,Rails Activejob,我有一个日程表作业: class SchedulerJob < ActiveJob::Base queue_as :scheduler def perform logger.debug("Start") DelayedJob.set(wait: 10.seconds).perform_later logger.debug("After Job 1") DelayedJob.set(wait: 20.seconds).perform_later
日程表作业
:
class SchedulerJob < ActiveJob::Base
queue_as :scheduler
def perform
logger.debug("Start")
DelayedJob.set(wait: 10.seconds).perform_later
logger.debug("After Job 1")
DelayedJob.set(wait: 20.seconds).perform_later
logger.debug("After Job 2")
DelayedJob.set(wait: 30.seconds).perform_later
logger.debug("End")
end
end
class DelayedJob < ActiveJob::Base
queue_as :delayed_jobs
def perform
puts "I'm done"
end
end
如果调用SchedulerJob.new.perform
,作业将在几毫秒内运行。如果我调用SchedulerJob.perform\u later
在Sidekiq中运行作业,大约需要90秒才能完成,通过查看日志,我可以看出这些.perform\u later
调用每次大约需要30秒
为什么会发生这种情况?顾名思义
稍后执行
perform
我的猜测是,当您稍后调用
perform\u
时,队列中有一些作业正在运行。问题在于初始值设定项
我猜你已经破坏了所有的并发性,因为你在池中入侵了一个全局$REDIS连接。不要那样做。让Sidekiq创建和管理连接池
这只意味着作业需要更长的时间来执行,但并不影响排队所需的时间。