Dynoサイズ
フォーメーション内の各プロセス(web、workerなど)はDyno上で動作します。Dynoとは、アプリケーションをコンテナとして隔離して実行するインスタンスです。Dynoにはいくつかのサイズがあり、メモリ、CPU、価格がそれぞれ異なります。プロセスタイプごとにどのサイズを選ぶかは、コスト管理とパフォーマンスチューニングの両方に影響します(スケーリングとパフォーマンスを参照)。
Common Runtimeのサイズ
Section titled “Common Runtimeのサイズ”これらのサイズは共有基盤であるCommon Runtime上で動作するため、ホストを他のアプリのDynoと共有します。隔離はコンテナ単位で行われ、ハードウェアを専有できるのは下表で専有「あり」としたサイズに限られます。
| サイズ | メモリ | CPUシェア | 専有 | コンピュート | Dynoユニット |
|---|---|---|---|---|---|
eco | 512 MB | 1x | なし | 1x | 1 |
basic | 512 MB | 1x | なし | 2x | 0.28 |
standard-1x | 512 MB | 1x | なし | 4x | 1 |
standard-2x | 1 GB | 2x | なし | 8x | 2 |
performance-m | 2.5 GB | 100% | あり | 12x | 8 |
performance-l | 14 GB | 100% | あり | 50x | 16 |
performance-l-ram | 30 GB | 100% | あり | 24x | 16 |
performance-xl | 62 GB | 100% | あり | 50x | 30 |
performance-2xl | 126 GB | 100% | あり | 100x | 60 |
Dynoユニットは、サイズ間の相対的なコストを表す単位です。Dynoは1時間稼働するごとに表の数だけユニットを消費し、常時稼働の場合は平均的な1か月で730時間分となります。ゼロにスケールしたプロセスタイプは、ユニットを消費しません。
サイズ名は大文字と小文字を区別しません。ただし慣例として、上表のように小文字とハイフンで表記します(例:standard-1x)。
Dynoユニットの価格
Section titled “Dynoユニットの価格”単価は1ユニット1時間あたり$0.025です。サイズのユニット数に稼働時間を掛けると、そのDynoの費用を求められます。たとえばstandard-1x(1ユニット)は1時間$0.025で、730時間フル稼働した1か月では$18.25です。8ユニットのperformance-mなら1時間$0.20、1か月では$146になります。
Dynoサイズの設定
Section titled “Dynoサイズの設定”プロセスタイプのサイズは、ps:scaleでのスケール時にあわせて指定・変更します:
$ bld ps:scale web=2:standard-2x worker=1:standard-1x -a my-appTYPE=QUANTITY:SIZEの構文を使うと、複数のプロセスタイプの数とサイズを1つのコマンドでまとめて指定できます。サイズを省略した場合、そのプロセスタイプは現在のサイズを維持します。
Dyno数を変更せずにサイズのみを変更する場合は、現在の数と新しいサイズを合わせて指定します:
$ bld ps:scale web=2:performance-m -a my-app現在のサイズの確認
Section titled “現在のサイズの確認”実行中のプロセスとサイズを一覧表示するには、次のコマンドを実行します:
$ bld ps -a my-app -j | jq '.[] | {type, state, size}'フォーメーション全体を確認する場合は、アプリの詳細情報を参照します(ゼロにスケールしたプロセスタイプも出力に含まれます):
$ bld apps:info -a my-app -j | jq '.formation'サイズの選び方
Section titled “サイズの選び方”- 新しいアプリでは、まず
standard-1xを選択してください。CPUシェアを1つ分確保でき、価格も手頃です。 - レビューアプリ、トラフィックの少ないステージングアプリ、パフォーマンスよりコストを優先する小規模な検証には
ecoまたはbasicを使用します。 - メモリ制限の超過でDynoが再起動される場合や、Dyno数は足りているにもかかわらず負荷時のレスポンスタイムが伸びる場合は、
standard-2xまたはperformance-*への引き上げを検討してください(垂直スケーリングを参照)。 - メモリ消費は大きいがCPUバウンドではないワークロードには、
performance-lよりもperformance-l-ramが適しています。RAMの割り当てが大きい一方、コンピュートはperformance-lのほうが多くなります。
