使っていないHerokuアプリを停止してdynoの消費を節約する

Herokuにたくさんアプリをあげていると、どこかからアクセスがあるだけでdynoがどんどん消費していってしまうので、節約するためにアプリを止める方法を調べて見ました。

herokuアプリを停止させる方法

herokuはデフォルトで30分間アクセスがないと停止という仕様になっていますが、そもそもアクセスをさせないようにするにはdynoを0にするという認識のようです。

herokuにはdynoを増やしてスケーリングさせる機能があるので、それを0にする感じですかね。

それでは実際にやって見ます。

リソース画面からdynoを停止するだけ

探してみれば簡単でした。

鉛筆マークを押して、ボタンをオフにするだけです。

これでdynoが0になるようです。

Herokuコマンドからでもいける

herokuでコマンドを使わないケースはないので、コマンドからやってもOKです。

heroku ps:scale web=0

dynoがないアプリはエラー表示される

dynoを0にすると、上記のようなページが出てきます。

Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command
heroku logs –tail

メンテナンスモードではダメっぽい

Settingsにメンテナンスモードがあるので、それでもいけるのかと思いきや、メンテナンス状態にしているだけでdynoの消費はしているようです。

Dynoの実行
メンテナンスモードの有効化、または無効化は、通常Dynoの実行を変えることはありません。Web Dynoはその前の状態同様動き続けますが、ルータによってリクエストがブロックされることによってHTTPリクエストを受信しなくなります。Worker Dynoなどの別のタイプのDynoもまた、動き続けます。

いくらかの場合、メンテナンスモードが有効の時にDynoの数を減らしたいと思うかもしれません。例えば、マイグレーション中にバックグラウンドのプロセスが動いていないことが必要なデータベースのマイグレーションを実行している場合などです。heroku scaleを使ってDynoの数を減らす事が出来ます :
Maintenance mode