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?

More than 1 year has passed since last update.

1年越しのCRONがサービスを落とした話

Posted at

なにがあったのか

平穏であるはずのとある平日の朝、サービスダウンのアラート通知がきました。
特に最近何かのリリースなど行っていなかったので、インフラ的な障害かアタックかを最初疑いました。
調べてみたところDBが負荷が異常に上がっていて、何も処理を受け付けない状態になっていました。

どうしてそうなった

何のプロセスが走っているのかSQLのプロセルを確認したところ・・・、同じ処理が二重に実行されていました。
バッチサーバのプロセスをみると、深夜に動く重たい集計処理が二重に実行されていました。
どうしてこうなった?と思ってcronの設定をみたところ・・・。

デイリーの集計処理の設定に加え、1年前の今日に設定した、「月日時分」で設定した集計処理の設定がありました。

思い起こせば1年前、集計処理の改修を行い、初めて本番で実行する前日に、もしかすると想定以上に処理時間がかかるかもしれないので、元々のデイリーのcron設定をコメントアウトして、次の日のいつもより3時間早い時間に「月日時分」を設定していたのでした。

翌日、元々のデイリーのcron設定のコメントアウトを戻したものの、「月日時分」で設定した部分は消さずにそのままにしていたようです。

そのバッチ処理も排他制御などかかっていなかったので、起動すれば同時に動かせる状態になっていました。

どうすればよかったのか

  • cronの設定は定期的に見直しましょう
  • できればcronではなく、GUIで管理できるようなタスクスケジューラを入れましょう
  • 同時に実行されないよう、バッチ処理には排他制御を入れましょう
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?