コンテンツにスキップ

Dynoサイズ

フォーメーション内の各プロセス(web、workerなど)はDyno上で動作します。Dynoとは、アプリケーションをコンテナとして隔離して実行するインスタンスです。Dynoにはいくつかのサイズがあり、メモリ、CPU、価格がそれぞれ異なります。プロセスタイプごとにどのサイズを選ぶかは、コスト管理とパフォーマンスチューニングの両方に影響します(スケーリングとパフォーマンスを参照)。

これらのサイズは共有基盤であるCommon Runtime上で動作するため、ホストを他のアプリのDynoと共有します。隔離はコンテナ単位で行われ、ハードウェアを専有できるのは下表で専有「あり」としたサイズに限られます。

サイズメモリCPUシェア専有コンピュートDynoユニット
eco512 MB1xなし1x1
basic512 MB1xなし2x0.28
standard-1x512 MB1xなし4x1
standard-2x1 GB2xなし8x2
performance-m2.5 GB100%あり12x8
performance-l14 GB100%あり50x16
performance-l-ram30 GB100%あり24x16
performance-xl62 GB100%あり50x30
performance-2xl126 GB100%あり100x60

Dynoユニットは、サイズ間の相対的なコストを表す単位です。Dynoは1時間稼働するごとに表の数だけユニットを消費し、常時稼働の場合は平均的な1か月で730時間分となります。ゼロにスケールしたプロセスタイプは、ユニットを消費しません。

サイズ名は大文字と小文字を区別しません。ただし慣例として、上表のように小文字とハイフンで表記します(例:standard-1x)。

単価は1ユニット1時間あたり$0.025です。サイズのユニット数に稼働時間を掛けると、そのDynoの費用を求められます。たとえばstandard-1x(1ユニット)は1時間$0.025で、730時間フル稼働した1か月では$18.25です。8ユニットのperformance-mなら1時間$0.20、1か月では$146になります。

プロセスタイプのサイズは、ps:scaleでのスケール時にあわせて指定・変更します:

$ bld ps:scale web=2:standard-2x worker=1:standard-1x -a my-app

TYPE=QUANTITY:SIZEの構文を使うと、複数のプロセスタイプの数とサイズを1つのコマンドでまとめて指定できます。サイズを省略した場合、そのプロセスタイプは現在のサイズを維持します。

Dyno数を変更せずにサイズのみを変更する場合は、現在の数と新しいサイズを合わせて指定します:

$ bld ps:scale web=2:performance-m -a my-app

実行中のプロセスとサイズを一覧表示するには、次のコマンドを実行します:

$ bld ps -a my-app -j | jq '.[] | {type, state, size}'

フォーメーション全体を確認する場合は、アプリの詳細情報を参照します(ゼロにスケールしたプロセスタイプも出力に含まれます):

$ bld apps:info -a my-app -j | jq '.formation'
  • 新しいアプリでは、まずstandard-1xを選択してください。CPUシェアを1つ分確保でき、価格も手頃です。
  • レビューアプリ、トラフィックの少ないステージングアプリ、パフォーマンスよりコストを優先する小規模な検証にはecoまたはbasicを使用します。
  • メモリ制限の超過でDynoが再起動される場合や、Dyno数は足りているにもかかわらず負荷時のレスポンスタイムが伸びる場合は、standard-2xまたはperformance-*への引き上げを検討してください(垂直スケーリングを参照)。
  • メモリ消費は大きいがCPUバウンドではないワークロードには、performance-lよりもperformance-l-ramが適しています。RAMの割り当てが大きい一方、コンピュートはperformance-lのほうが多くなります。