【Heroku】JawsDBの無料プランには制限がある
HerokuにWEBサービスをデプロイする時には、mySQLを使うためにアドオンの「JawsDB」を利用することがあります。
たまにページにアクセスすると突然500エラーが起きて、そこからしばらく500エラーが出続けてページが開けないということが時々ありました。
そしてどうやらその原因がJawsDBによるエラーということがわかったので、そのメモです。
目次
Server Error (500)の原因
JawsDBの特定のプランには1時間のうちにDBへアクセスする回数の上限(max_questions)があり、この上限を超えてしまうと500エラーになってしまいます。
制限があるのはSharedプラン(上から3つの安いプラン)で、これらは他のユーザーと容量をシェアしているため1ユーザーが使いすぎないために制限を設けているようです。
Sharedプラン | Single-tenantプラン | |
---|---|---|
DBへのアクセス回数 | 上限あり(1時間あたりの回数) | 上限なし |
料金 | Free 〜 月24ドル | 月39ドル 〜 |
対象プラン | Kitefin Shared Leopard Shared Blacktip Shared | Whitetip Whitetip Alpha Mako …etc |
Server Error (500)を起きないようにするには
⑴ 上限に達しない範囲で使う
「無料プラン(Kitefin)」や「その他のmulti-tenantプラン(Leopard、Blacktip)」では表のような制限があります。
利用中プランの上限をよく確認して、これを超えない範囲で使用することで500エラーを避けることができます。
⑵ Single Tenantのプランにアップグレードする
「Single Tenant」を持っているプランにする方法です。これらはアクセス回数の上限がないため、確実にエラーを起こさせないためにはプランを上げることが一つの解決法です。
ただし「月$39〜」という価格なのでお手頃とは言えないですね…。
Server Error (500)が起きてしまったら…
もしSharedプランを利用していて上限に達してしまったら、「1時間待つ」か「プランを上げる」のどちらかしかないと思います。
対処法
- 1時間待つ
- JawsDBのプランを上げる
まとめ
DawsDBを安く利用するなら上限に達しない範囲で抑えるように工夫しないといけないようです。
個人的には、Djangoの管理画面上で大量データをCSVインポートをしたかったり、DjangoでAPIを作ってNext.jsで大量のページをビルドしたかったりするので、プランを上げるしかないのかなと感じでしまいました。。
一時的な大量アクセスの時だけアップグレードして、終わったらすぐにダウングレードするとかだと料金的にどうなるんだろうか…