heroku でアイドリングになるのを回避する

アイドリング状態


Dynos and the Dyno Manager | Heroku Dev Center
heroku でのアイドリング状態とは1時間動いていないとなるスリープみたいなもの。
この状態でリクエストが来ると立ち上がりまで20秒位かかるので重いと勘違いされるかも。
アイドリング状態かは以下のコマンドで確認できる。

$ heroku ps
Process  State         Command                             
-------  ------------  ------------------------------------
web.1    idle for 23h  bundle exec thin -p $PORT -e $RACK..

「idle for 23h」は 23時間アイドリング だよ、とのこと。

ぐぐってみるといろいろ回避方法(New Relic, Rails 内のスケジューラ)が載っていたが失敗。cron で ping を叩くのもありみたいだけど、 cron ができるレンタルサーバがないのでやっていない。最終的に成功したのが「pingdom」を利用することだ。

pingdom を利用する


pingdom は Web サイトのモニタリングしてくれるサービスである。無料版では1サイト利用できる。
もし、落ちていたらメールやツイッターで知らせてくれる。
登録は簡単。名前とメールアドレスを入力して届いたメールのパスワードでログインする。
そして、モニタリングするサイトの URL やモニタリング方法などを設定するだけ。簡単!

ちなみに、アクティブな状態は…

$ heroku ps
Process  State      Command                               
-------  ---------  ------------------------------------  
web.1    up for 7h  bundle exec thin start -R config.r..  

「up for 7h」でアクティブであることを確認できる。