我正在使用Resque,Resque-Status和Resque-Retry来处理bkg作业。以下是一个示例作业。它针对4-5个模型执行查询。现在我想尝试使用Sidekiq,它夸耀它的速度超过了Resque。
但在此之前,我想在我的rails应用程序中对我的下一项工作进行基准测试,以便稍后验证哪个工作表现最好。
class BkgJob < Resque::JobWithStatus
extend Resque::Plugins::Retry
@retry_limit = 3
@retry_delay = 60
@queue = :critical
def perform
worker_id, station_id, ids = options['worker_id'], options['station_id'], options['ids']
human_worker = Worker.find(human_worker_id)
station = Station.find(station_id)
.....
.....
end
end因此,问题是如何对上述作业类或执行方法进行基准测试?在基准测试方面,我真的是新手。
发布于 2012-05-17 16:44:07
对于Resque或Sidekiq,您在后台运行的作业的性能几乎相同。然而,Sidekiq在从队列中挑选作业时要快得多,而且与Resque相比,它的内存效率要高得多。
对后台作业进行基准测试仍然是一个好主意,但我想说的是,您应该只对执行方法本身进行基准测试,而不是对排队和执行作业的整个过程进行基准测试。您可以这样做(一个RSpec示例):
require 'benchmark'
describe 'performance' do
it 'takes time' do
options = {'worker_id': 123, 'station_id': 456, 'ids': [1,2,3]}
puts Benchmark.realtime do
100.times { BkgJob.new(options).perform }
end
end
endhttps://stackoverflow.com/questions/10515569
复制相似问题