Herokuで1サービス1Dyno
でサービスを公開している場合、一定時間アクセスがないとDynoがidle状態になり、次回アクセス時にDynoの起動時間分の時間がかかります。
それを回避するためにHerokuのDynoが寝ないようにするのように定期的(Hourly
)にHeroku Schedulerから起こしてあげるという対策をしていることが多いかと思います。
ただ、Herokuで(1サービス1Dynoの)サービスを2個以上公開している場合には、すべてのサービスを常時起動しておくと無料枠(750時間)を超えることになります。
そこで、常時アクセスがあるわけではなく
て、できれば無料枠(750時間)内に、もしくはできるだけ安価に収めたい場合は、Heroku Schedulerで下記のような感じで(確実に)起動させておきたい時間帯を指定して
Dynoを起こしてあげるようにするのが良さそうです。
Heroku SchedulerのFREQUENCY
はHourly
で、TASK
に
# 9:00 - 21:00 JST (= 0:00 - 12:00 UTC) の間、起動しておきたい場合
$ seq 0 12 | grep -qw $((10#`date -u "+%H"`)) && curl http://xxxx.herokuapp.com > /dev/null 2>&1
# 6:00 - 18:00 JST (= 21:00 - 9:00 UTC) の間、起動しておきたい場合
$ (seq 21 23; seq 0 9) | grep -qw $((10#`date -u "+%H"`)) && curl http://xxxx.herokuapp.com > /dev/null 2>&1