2016-08-31 17 views
3

ECSタスクのメモリ割り当てに関するガイダンスがあります。私はサーバーのコストをできるだけ安くしたいクライアントのためにRailsアプリケーションを実行しています。私は2つのCPUと4 GBのメモリを持つ中規模サーバーのサイズを検討していました。AWS ECSタスクメモリとCPU割り当て

ほとんどの場合、一度にレールサーバーを稼動するコンテナが1つだけ必要です。しかし、時にはスパイクがあり、私は別のサーバーをスケールアウトし、コンテナを展開したいと考えています。トラフィックが減速すると、単一のサーバー/タスクにスケールダウンしたいと考えています。

私は助けを必要とするのはここです:

私は私のタスクメモリの設定があることは何をすべき? 4ギガバイト?これはボックスの合計になりますが、システムプロセスは考慮されません。私は3 GBをすることができましたが、私は情熱のない空きメモリを無駄にしていました。 CPUのための同じ質問...私はそれを100%にする必要がありますか?

大きなサーバー、つまり16GBはそこに座っていて、ほとんどの場合1コンテナしか必要としません。そのような無駄です。

単純なようです。インスタンスごとに1つのタスク。インスタンスが75%の使用率に達すると、新しいインスタンスをスケーリングし、タスクを2番目のインスタンスに展開します。なぜ私はタスクメモリとCPUの設定を1対1の比率に設定する必要があるのでしょうか?

誰でも私が説明したことを行う方法に関するガイダンスを教えてもらえますか?あるいは、適切なタスク定義の設定は、インスタンスと一対一になることを意図しているときはどうでしょうか?

ありがとうございました。フィードバックに基づいて

--Edit--

、ここでの潜在的な解決策があります:

タスクの定義=メモリ予約は3ギガバイトであり、メモリは4GBです。有する

Ec2と媒体ノード、4ギガバイト

ECSサービス自動スケーリング構成: - サービスのCPU使用率が75%よりも大きい場合(1によってタスクの数を増やす)スケールアップ。
- サービスCPU使用率が25%未満の場合、スケールダウン(タスク数を1減らす)。

ECSクラスタスケーリングが設定されています。 - クラスタメモリの使用率が80%を超えると、スケールアップします(ec2インスタンス数を1増やします)。 - クラスタメモリの使用率が40%未満の場合、スケールダウン(ec2インスタンス数を1減らす)。

例: 3 GB予約のタスクを実行する1 EC2インスタンスから開始します。これは75%のクラスタ利用率です。

サービスのスパイクとCPU使用率が75%を超えると、サービス規模がトリガーされます。今度はタスク数が増え、新しいタスクが3GBをもう一度求めているので、合計で6GBになりますが、4つしか利用できないので、クラスタの使用率は150%です。

これは、新しいサービスのクラスタに新しいec2ノードを追加するクラスタスケール(80%以上)をトリガします。そこにいるとき、私たちは6GBの需要/ 8GBの利用可能な75%で安定しています。

縮尺も同じです。

答えて

3

コンテナのメモリを設定するには、 "memoryReservation"を使用することをお勧めします。コンテナのメモリのソフト制限と "メモリ":コンテナのハード制限。

"memoryReservation"を3GBに設定すると、コンテナの他のインスタンスが同じEC2インスタンスに上がらないようにすることができます。 「メモリ」オプションは、コンテナが絶対に必要なときにメモリ上で膨らむことを可能にする。

参考:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

ECSは今、同じEC2コンピュートインスタンス上で二回同じタスクの展開を無効にするための柔軟性をサポートしていません。

しかし、CPU /メモリをブロックするか、既知のポートを外部化することで、あなたのやり方をハッキングすることができます。

+0

したがって、3 GBのメモリの予約を推奨していて、次に4 GBのメモリを設定していますか?次に、CPU> 75%を使用してインスタンスをオートスケールすることができ、同様のアラームでサービス番号を2にスケーリングすると、新しいインスタンスが新しいインスタンスに配置されます。それでは同じように縮尺を変えて...それはそれの要点ですか?ありがとうございます – Thomas

+0

あなたはecsスケーリングやec2計算スケーリングについて話していますか?あなたのコメントは少なくとも2つのec2インスタンスを持つecsスケーリングの文脈ではよく見えます – Shibashis

+0

私はあなたの質問に対する答えは両方であると思います。 ec2インスタンスとecsサービスの両方を1から2にスケーリングする必要があります。 – Thomas

関連する問題