Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インシデント調査から学んだSidekiq設定の落とし穴/Sidekiq configurati...

ワンキャリアTech
February 21, 2025
7

インシデント調査から学んだSidekiq設定の落とし穴/Sidekiq configuration pitfalls learned from incident investigation

ソフトウェアエンジニアの杉水が「2024年を振り返ろう!若手エンジニアのための交流LTナイト」で発表した際の資料となります。

イベントURL:
https://buysell-technologies.connpass.com/event/335378/

ワンキャリアTech

February 21, 2025
Tweet

More Decks by ワンキャリアTech

Transcript

  1. ONE CAREER Inc . Copyright © ONE CAREER Inc. All

    Rights Reserved. 自己紹介 Career 趣味 ひとこと 2 杉水 俊輝 ソフトウェアエンジニア 山口大学 → 筑波大学大学院 → ONE CAREER (24卒) 野球観戦⚾ 読書📕 ポケモン X/GitHub:@ltoppyl
  2. Copyright © ONE CAREER Inc. All Rights Reserved. 目次 3

    • はじめに • 学びの紹介:Sidekiq 設定の落とし穴 • まとめ
  3. Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 5

    今日お話しすること:インシデント対応を経てキャッチアップした内容 本来実行されるはずの非同期処理が失敗する不具合が発生! アプリケーションコードを追っても特に原因は不明
  4. Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 6

    今日お話しすること:インシデント対応を経てキャッチアップした内容 本来実行されるはずの非同期処理が失敗する不具合が発生! アプリケーションコードを追っても特に原因は不明 非同期に行う部分の処理 (Sidekiq)の設定によっては、 デプロイのタイミングなどで非同期処理が完了せずに終了してしまう ことがあることがわかった!
  5. Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 7

    今日お話しすること:インシデント対応を経てキャッチアップした内容 本来送信されるはずのメールが送信されない不具合が発生! アプリケーションコードを追っても特に原因は不明 非同期に行う部分の処理 (Sidekiq)の設定によっては、 デプロイのタイミングなどで非同期処理が完了せずに終了してしまう (メールの 送信に失敗する)ことがあることがわかった! 今回学んだ「Sidekiq 設定の落とし穴」についてご紹介します!
  6. Copyright © ONE CAREER Inc. All Rights Reserved. 9 Sidekiqとは?

    ◦ 非同期処理(バックグラウンドでの作業を処理)するために用いられるライブラリ ▪ メールの送信やデータのバッチ処理などの時間がかかる作業を アプリケーションの裏で実行しています。 Sidekiq 設定の落とし穴
  7. Copyright © ONE CAREER Inc. All Rights Reserved. 10 Redis

    • データベース管理システムの1つ • Sidekiq のバックエンドとして 利用され、ジョブのキュー管理を担う ECS (Elastic Container Service) • AWS が提供するコンテナ管理サービス ◦ https://aws.amazon.com/jp/ecs/ Sidekiq 設定の落とし穴 Sidekiqの他に登場する技術要素 ECS Redis Enqueue Dequeue
  8. Copyright © ONE CAREER Inc. All Rights Reserved. 11 Sidekiq

    設定の落とし穴 Sidekiq でジョブが実行中に、デプロイされると 実行中のジョブはどうなるのでしょうか? ECS Redis Enqueue Dequeue
  9. Copyright © ONE CAREER Inc. All Rights Reserved. 12 https://note.com/dev_onecareer/n/n7bdcf0c98622

    より Sidekiq 設定の落とし穴 Sidekiq停止 =exit(0) SIGKILL SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s ECS の終了を Sidekiq に伝える
  10. Copyright © ONE CAREER Inc. All Rights Reserved. 13 https://note.com/dev_onecareer/n/n7bdcf0c98622

    より Sidekiq 設定の落とし穴 SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 実行中のジョブの完了を待つ
  11. Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止

    処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 14 https://note.com/dev_onecareer/n/n7bdcf0c98622 より タイムアウト時間までに完了しなかった ジョブはジョブキューに戻される Sidekiq 設定の落とし穴
  12. Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止

    処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 15 https://note.com/dev_onecareer/n/n7bdcf0c98622 より デフォルト値は設定で変更可能 Sidekiq 実行時に -t オプションで指定する Sidekiq 設定の落とし穴
  13. Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止

    処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 16 https://note.com/dev_onecareer/n/n7bdcf0c98622 より デフォルト値は設定で変更可能 ECS のタスクパラメータの stopTimeout ECS の環境変数の ECS_CONTAINER_STOP_TIMEOUT Sidekiq 設定の落とし穴
  14. Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止

    処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 17 https://note.com/dev_onecareer/n/n7bdcf0c98622 より デフォルト値は設定で変更可能 ⚠「Sidekiq 終了までのタイムアウト時間<SIGKILL が送信されるまでの時間」 とする必要がある! Sidekiq 設定の落とし穴
  15. Copyright © ONE CAREER Inc. All Rights Reserved. まとめ 19

    • インシデントの調査より、Sidekiq の設定によっては デプロイのタイミングなどで非同期処理が完了せずに 終了してしまうことがあることがわかった • 単にアプリケーションのコードを追うだけでなく ライブラリの設定や仕組みを理解することの重要性を再認識