0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

障害対応に使える Sidekiq ジョブの調べ方

Posted at

これなに

その昔、仕事で sidekiq を使っていたのですが、障害で死んだ sidekiq のジョブをポチポチ調べるのがしんどかったので、調べた中でいろいろわかったことをメモ。

基本的には個人的な雑記なので、読みやすさや正確性云々は考えてません。悪しからず。
あとフレッシュで正確な情報は sidekiq の wiki ページを見るのが良い。

2023年10月に note に書いた記事を移行しただけなのですが、基本的な仕様は変わっていないはず。もし細かいところが変わっている場合はご容赦ください。

便利な一覧表

  • Sidekiq::DeadSet.new : 失敗
  • Sidekiq::Workers.new : 実行中
  • Sidekiq::Queue.new : 待機中
  • Sidekiq::ScheduledSet.new : 実行予約(あんま使い所ないので割愛)
  • Sidekiq::RetrySet.new : リトライ(同上)

失敗したジョブの情報取得する

失敗したジョブをすべて取得する

class: CronJob::AbcJob, job_id: fd02749d-29d7-4a1c-938d-7bbbc11ba353, enqueued_at: 2023-10-22T03:05:04Z 的な感じで書くことでリストできる

dead_jobs = Sidekiq::DeadSet.new
dead_jobs.map {|job| "class: #{job["args"][0]["job_class"]}, job_id: #{job["args"][0]["job_id"]}, enqueued_at: #{job["args"][0]["enqueued_at"]}"}

特定の失敗ジョブの情報を取得する

時間を指定して、dead_abc_jobs.first/last/length とかも使える

dead_jobs = Sidekiq::DeadSet.new
dead_abc_jobs = dead_jobs.scan("AbcJob").select{|job| job.args[0]["enqueued_at"].to_time > Date.new(2020,1,12)}

実行中のジョブの情報を取得する

実行中のジョブをすべて取得する

とりあえず全部出す

running_jobs = Sidekiq::Workers.new
running_jobs.each {|job| job}

待機中のジョブの情報を取得する

待機中のジョブを全て取得する

とりあえず全部出す

queuing_jobs = Sidekiq::Queue.new
queuing_jobs.each
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?