Herokuアプリを高速化したいのですが、Dynoを追加する必要がありますか、それとも最初のWorkerを追加する必要がありますか?
ありがとう。
これが最初に回答されてから、状況は少し変化しました。また、重要なポイントが欠けていると思います。
異なるdynoサイズは異なるCPUパフォーマンス特性を提供し、高CPUの状況で少し役立ちますが、理想的には、最適化の最初のステップとしてバックグラウンドワーカーに作業をオフロードし、コードを最適化することを検討する必要があります。
まとめると。 dynoが1つしかない場合は、別のdynoを追加するか、2 x dynoを使用してアイドルスリープを回避することを選択する必要があります(冗長性を高める可能性があります)。 dynoサイズを調整することでCPUのパフォーマンスをある程度得ることができますが、CPUを集中的に使用するアプリケーションを本当に向上させる主な方法は、バックグラウンドジョブ、アーキテクチャ、および一般的にコード効率を向上させることです。
追伸もちろん、1時間ごとにアプリに何らかのポーリングを設定し、この方法でこのポリシーを回避することもできますが、ここで公正にしましょう-不正行為ではありませんか? Herokuが(小さいとはいえ、うまくいけばうまく機能している)アプリを実行するためにいくらかのペニーに値するとは思わないのですか? :)
これで私の応答を参照してください post -Dynosはパフォーマンスを向上させません
ワーカーもダイノも、アプリケーションの速度を直接上げることはありません。アプリケーションが遅い場合、dynoを追加しても、引き続き遅くなります。
Dynosは同時リクエストを表します。 1つのダイノで、Herokuは一度に1つの同時リクエストを処理します。 4つのダイノでは、4つのリクエストを処理しますが、リクエストの完了に10秒かかる場合、4つのリクエストはそれぞれ10秒かかります。
重くて遅いプロセス(電子メール配信や.PDF生成など)をバックグラウンドタスクに移行し始めると、ワーカーは間接的にアプリケーションを高速化できます。
一般的に、アプリケーションのパフォーマンスを向上させる方法は、アプリケーションの動作を検査し、コードを改善することです。通常、低速のクエリを高速化したり、ビューフラグメントをキャッシュするには、高速キャッシュレイヤー(RedisやMemcachedなど)を使用する必要があります。