最近、DockerのRailsアプリをAmazon ECSに配備しました。私のアプリは2つのコンテナを使用しています.1つはアプリ用、もう1つはアプリサーバーとしてのPuma、もう1つはnginx用です。これはアプリのリバースプロキシとして機能します。私は2人の労働者と5人のスレッドのデフォルトのプーマ設定を使用していました。私はこれをt2.smallで実行しています。DumaのPumaワーカー、スレッドの設定方法
私たちは、アプリケーションが最終的に時間切れになる問題を見始めました。ユーザーは応答を得ないか、最終的にロードバランサから504の不良ゲートウェイエラーが発生します。 Railsのログでは、非常に異常な状況では、リクエストが突然長時間(800秒間)実行されることがわかります。数分後、プーマは新しい労働者を始め、通常の状態に戻ります。
私は、CPUコアの数と同じになるように、従業員を設定する必要があることをPumaのドキュメントで読んでいます。これはt2.smallで1であるため、これを行いました。私はあなたのアプリがスレッドセーフであるかどうかわからない場合は、それを混乱させるべきではないので、スレッドを1に設定します。 1人の作業者、1人のスレッド。
これまでのところ、1日中は大丈夫でした。
どのように並行処理を行うのですか?アプリケーションはほとんどRAMやCPUを使用しています - 私はちょうどより多くのタスク(1タスク= 1レールコンテナ+ 1 nginxコンテナ)をスピンアップする必要がありますか?私がプーマの前にnginxを持っていれば、それについても心配する必要はありますか?