37
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Heroku無料枠の限界に挑む!30分以上アクセスがなくてもスリープにならないようにやらしく設定する

Last updated at Posted at 2021-05-05

Herokuの無料枠だと、30分アクセスがないとスリープしてしまう問題をなんとかしたい...!!

(Herokuの無料枠では)Web アプリに 30 分間アクセスがないとスリープします。
次にアクセスがあったときに Dyno を起動する必要があるので数秒程度、レスポンスに時間が掛かります。

なぜやるのか

現在LINEボットを開発中で、無料で済ませたいためHerokuにデプロイしたのですが、Herokuの無料枠では30分何もアクセスがないとサーバーがスリープモードに入ってしまいます。一度スリープモードに入ってしまうと、再度起動までに予想外に時間がかかってしまい、ボットで返ってくるはずの返事が返ってこなかったり、LIFFブラウザを立ち上げてからページを開くまでに30秒ほどかかってしまったりと、このスリープが予想外に弊害になっていました。

ですが、ようは30分内になんらかのリクエストがアプリ側に送られればHerokuはスリープモードに入らないわけです。
ということで、Herokuのアドオン、「Scheduler」を使用して、10分に一回、Heroku側になんらかのリクエストを送る処理を実装することにしました。

やり方

参考: https://haayaaa.hatenablog.com/entry/2019/03/01/222221

①Schedulerアドオンの追加

まず、ターミナルから heroku addons:add scheduler:standardをしてアドオンを追加します

 heroku addons:add scheduler:standard

※アドオンとは、プラグイン、拡張機能のようなものです。

②Herokuのブラウザアプリにアクセスし、shedulerをクリック

puffshare _ Hero (1).png

③ Add jobをクリックし、10分毎にHerokuのデプロイ先URLにcurlコマンドでリクエストコマンドを送る処理を追加

heroku.png

(④ % heroku logs -tでログを確認)

ターミナルで% heroku logs -tを叩き、10分毎に以下のようなログが残っていたら成功です

2021-05-05T13:22:03.309820+00:00 app[api]: Starting process with command `curl https://hoge.herokuapp.com/` by user scheduler@addons.heroku.com
2021-05-05T13:22:19.636248+00:00 heroku[scheduler.5024]: Starting process with command `curl https://hoge.herokuapp.com/`

簡単〜

37
47
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?