Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

[Heroku] 特定の時間帯にDynoを起動させておくためのワンライナー (Heroku Scheduler用)

More than 5 years have passed since last update.

Herokuで1サービス1Dynoでサービスを公開している場合、一定時間アクセスがないとDynoがidle状態になり、次回アクセス時にDynoの起動時間分の時間がかかります。

それを回避するためにHerokuのDynoが寝ないようにするのように定期的(Hourly)にHeroku Schedulerから起こしてあげるという対策をしていることが多いかと思います。

ただ、Herokuで(1サービス1Dynoの)サービスを2個以上公開している場合には、すべてのサービスを常時起動しておくと無料枠(750時間)を超えることになります。

そこで、常時アクセスがあるわけではなくて、できれば無料枠(750時間)内に、もしくはできるだけ安価に収めたい場合は、Heroku Schedulerで下記のような感じで(確実に)起動させておきたい時間帯を指定してDynoを起こしてあげるようにするのが良さそうです。

Heroku SchedulerのFREQUENCYHourlyで、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
rakus
「IT技術で中小企業を強くします!」というミッションを掲げ、中小企業の業務効率化に貢献する複数のクラウドサービスを提供しているIT企業です。「楽楽精算」「メールディーラー」など、国内トップシェアを誇る複数のサービスを開発し、累計導入社数は5万社を超えています。次の時代の"楽"を創るための、まだ見ぬサービスや機能を生み出す取り組みは、今日も続いています。
https://www.rakus.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away