Sidekiq工作并行运行缓慢

时间:2017-05-30 22:48:14

标签: ruby-on-rails sidekiq

我正在运行一个对postgres 4.7数据库有很多查询的sidekiq作业。当它并行运行时,由于某种备份,它的运行速度大约是3倍。运行配置文件时,整个作业都会显示,并且没有瓶颈。它在csv中的每一行上运行,访问每个单元格,并为该单元格创建数据库条目。整体结构如下:

def perform(row)
    ActiveRecord.base.transaction do
       row.cells.each do |cell|
          # db ops for cell
       end
       # fetch metadata for row from api and write
    end
end

作业不是线程安全的,并且由于某些单元格与其他行共享值,因此会遇到upsert isues。当有多个并行运行时,我也看到运行时神秘地从每个作业大约2.5秒猛涨到每个作业大约15秒。我不确定它是否是锁定问题,或者作业是否只是等待线程上的处理时间。老实说,我很难过,并且想知道我可以采取什么方法来找到错误的来源。

0 个答案:

没有答案