Heroku無料枠のスリープを回避する

Heroku の無料枠で動いているアプリケーションは 30 分間接続がないとスリープしてしまい,次に立ち上げたときに時間がかかってしまいます.が,実は回避する方法もあります.

Heroku の無料枠の制限

一応説明しておくと,クレジットカードもしくはデビットカードを登録した無料アカウントでは,月 1,000dyno 時間まで無課金でアプリケーションを動かすことができます.

感覚的に 1dyno = 1 コアだと考えていいので,一つのアプリケーションを一か月動かしたら大体 720dyno 時間を消費します.

スリープを回避する方法

アプリが眠らないようにするためにすべきことは簡単です.30 分経つ前に叩き起こせばいいんです.

Web アプリケーションの場合は URL に接続するだけです.

URL に定期的に接続する方法はいくつかあると思いますが,今回は Heroku で完結させるために Heroku Scheduler アドオンを用います.

Heroku Scheduler の設定

まず,プロジェクトにアドオンを追加します.このアドオンはこの程度の処理であれば,無料で使うことができるものです.

terminal
$ heroku addons:create scheduler:standard

その後 Heroku のサイトを見ると,プロジェクトのトップページのアドオンに Heroku Scheduler が出ているはずです.そこから GUI での設定画面に移動できます.

Web アプリケーションに接続するよう,コンテンツの取得などに使う curl を用います.

terminal
$ curl http://www.example.com

これを 10 分おきに実行するように設定しておけば,スリープしません.

注意点

スリープしないということは常に dyno 時間を消費し続けるので,二つ以上のアプリに設定すると共倒れします.