Heroku小ネタ

クレカ登録して無料dyno時間を月500時間→1,000時間にする

クレカ登録をして、無料dyno時間を月500時間から+450時間で1,000時間にする方法です。
これによって無料で24時間(月744時間)稼働できるWEBサービスを作れるようになります。
更に、残り256時間あるので、1日8時間程度のcronやworkerを動かすことができます。

ちなみに無料dyna時間を超えても勝手にクレカで引き落とされることはないとのことです。超えると、dynaは強制的にスリープ状態になり、月末まで動作しなくなるそうです。安心です。

ダッシュボード(https://dashboard.heroku.com/apps)の右上→Account settingsをクリック。

Billing→Add credit cartの順にクリックして登録できます。
登録後は、次の「無料dyno時間の残量を確認」に添付の画面のようになります。

無料dyno時間の残量を確認

上記の通り、クレカ登録済みになっています。
無料dyno時間が月1,000時間、うち72.42時間使用、残り927.58時間という状態です。

CLIでも確認できます。

% heroku ps -a <app name>
Free dyno hours quota remaining this month: 550h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
Free Dyno Hours | Heroku Dev Center
Every personal Heroku account is allocated a pool of hours which you can use with Free dynos. This article describes the behavior of apps using Free dynos.
=== web (Free): heroku-php-apache2 (1) web.1: idle 2022/07/18 19:19:33 +0900 (~ 25m ago)

無料dynoが30分でスリープしないように定期的にアクセスする

無料dynoのWEBサーバーは、30分以上アクセスがないと、自動でスリープします。
スリープすると無料dyno時間を消費しないため、節約にはなりますが、アクセスがあった際に起きるまでに15秒程度かかって体感が非常に悪いです。

上記の通り、24時間連続稼働できるだけの無料dyno時間があるので、30分以内の定期的なアクセスをすることで、スリープしないようにします。

以下のURLを参考に外部サービスを使って解決しました。
cron的に使えるHeroku Schedulerを使うことも可能ですが、これはこれで無料dyno時間を消費してもったいないのでやめておきました。

Herokuの無料dynoをスリープさせないで24時間稼働させる4つの方法 | Casual Developers Note
Herokuの無料のdynoを使っている場合、現時点のルールでは30分でスリープしてしまいます。スリープしてしまうと、アクセスした時点で起動するのでサイトの表示がかなり遅くなってしまいます。今回は、このスリープを回避して、無料dynoを24時間稼働させる方法を紹介します。 はじめに Herokuの無料dynoのルールは...

slug size(スラグサイズ)のワーニングについて

Herokuにgit pushする際にWarningが出ていることに気づきました。
slug sizeというもの(アプリパッケージ的なものらしい)が大きすぎるようで、300MBを超えると警告、500MBを超えるとpush出来なくなることもあるようです。

見ての通りギリギリです。。

% git push heroku master
remote: -----> Compressing...
remote:        Done: 496.7M
remote: -----> Launching...
remote:  !     Warning: Your slug size (496 MB) exceeds our soft limit (300 MB) which may affect boot time.

参考までにアプリディレクトリ配下を見てみると、.gitが大きいですがこれはslug sizeに無関係とのことです。

となると、node_modulesですが、どうやらPuppeteerがそもそも大きいらしく、あまり改善の余地がないことがわかりました。

% du -sh .[^.]* * | sort -hr
271M	node_modules
128M	.git
 88K	package-lock.json
 12K	endpoints
4.0K	puppteer_demo.js
4.0K	package.json
4.0K	index.js
4.0K	Procfile

以下のコマンドで、リポジトリサイズやキャッシュクリアなどをしてみましたが効果ありませんでした。

% heroku plugins:install heroku-repo
% heroku repo:gc --app app-name
% heroku repo:purge_cache --app app-name

Herokuコマンド

エラーログをウォッチ
% heroku logs --tail -a app-name
ログ記録 | Heroku Dev Center
ログは、アプリの実行中プロセスすべての出力ストリームから集約された、タイムスタンプが付いたイベントのストリームです。syslog ドレインを取得、フィルタリング、または使用します。
デプロイ

git push heroku master

コメント

タイトルとURLをコピーしました