概要
私はモバイルアプリのバックエンドAPIに Ruby Rails + Grape を docker (compose)にのせて使用していて、同時に、dockerと親和性の高いcronoを動かしてます。
が、二か月くらい安定稼働してたのにある日突然停止!(^^;)。(二か月というのがヤバい)
cron系は止まるのはやばいので、書いておきます。
原因
個人アプリだったので、cronoの設定は、あまり考えずに設定してました(汗)。
危険な話ですが、ログが溜まりすぎると停止します(環境によっては停止しないのかもしれないが、自分の環境では見事に停止してくれてました)。
cronoは、dbテーブルを自前で持っているわけですが(導入時migrateすると思います)、そこに管理情報を入れるのだが、何もしないとそのフィールドにログをしこたま突っ込んでくれます(笑)。
なんで止まったんだろうと思い、phpmyadminで覗いて、そこのフィールドのデータを削除してあげると、とたんに動き出したのでそれが原因で間違いありませんでした。
対策
truncateする設定をしないといけませんね。
#Crono.perform(AggregateJob).every 10.minutes
Crono.perform(AggregateJob).with_options(truncate_log: 1000).every 10.minutes
感想
私が不注意だったとはいえ、crono大丈夫かよ・・という感じです。開発も止まってるようだし、業務ではやはり使わないほうがいいんだろうか?
誰か教えてください。