AetherEchoesEngineering
Vol.042025年6月10日
Engineering#00072 min2863 view

Sidekiq 8 の retry 戦略を「諦め時」から設計する

デフォルトの 25 回リトライを盲信しない。エラーの種類ごとに retry 回数を変える設計と、dead queue の運用方針を整理します。

SoSoraEndo2025年6月10日2 min286

25 回リトライは多すぎる

Sidekiq のデフォルト 25 回は「20 日以上かけて再試行する」設計です。多くのジョブにとっては明らかに過剰で、dead queue に流れる前に確実に問題を見落とします。

ジョブを 3 種類に分ける

  1. 冪等で軽い(外部 API 呼び出し等) → retry 5 回 / 30 分以内に dead 行き
  2. 冪等で重い(バッチ集計等) → retry 3 回 / 失敗したら手動再実行
  3. 冪等じゃない → retry 0 回 / そもそも再実行しない設計に直す
class FetchExternalData
  include Sidekiq::Job
  sidekiq_options retry: 5, dead: true
end

dead queue は「ゴミ箱」じゃない

dead に入った瞬間に Slack 通知して、当日中に triage する運用を強制します。dead を「見ない場所」にした瞬間、無音障害が始まります。

まとめ

retry の回数は「諦めるタイミング」を決める設計。デフォルトに任せず、ジョブの性質に合わせて明示的に書きましょう。

Tags

Reaction

Share

X (Twitter)