SoSoraEndo2025年6月10日2 min286 字
25 回リトライは多すぎる
Sidekiq のデフォルト 25 回は「20 日以上かけて再試行する」設計です。多くのジョブにとっては明らかに過剰で、dead queue に流れる前に確実に問題を見落とします。
ジョブを 3 種類に分ける
- 冪等で軽い(外部 API 呼び出し等) → retry 5 回 / 30 分以内に dead 行き
- 冪等で重い(バッチ集計等) → retry 3 回 / 失敗したら手動再実行
- 冪等じゃない → retry 0 回 / そもそも再実行しない設計に直す
class FetchExternalData
include Sidekiq::Job
sidekiq_options retry: 5, dead: true
end
dead queue は「ゴミ箱」じゃない
dead に入った瞬間に Slack 通知して、当日中に triage する運用を強制します。dead を「見ない場所」にした瞬間、無音障害が始まります。
まとめ
retry の回数は「諦めるタイミング」を決める設計。デフォルトに任せず、ジョブの性質に合わせて明示的に書きましょう。