Amazon ECS のタスクにメモリを割り当てるにはどうすればよいですか?
最終更新日: 2019 年 11 月 21 日
簡単な説明
Amazon ECS では、メモリをタスクに割り当てるためにメモリを memoryReservation (ソフト制限) と memory (ハード制限) の 2 つのパラメータを使用します。各パラメータの値は、タスクの実行時に Amazon ECS コンテナインスタンスの使用可能なメモリユニットから減算されます。この計算は、タスク定義のソフト制限またはハード制限に基づきます。詳細については、「クラスター使用率」を参照してください。
注: memory および memoryReservation パラメータは、Amazon ECS タスク定義の コンテナ定義パラメータ として設定されます。コンテナレベルの メモリ と memoryReservation の両方の値を指定する場合、 メモリ は memoryReservation より大きい必要があります。memoryReservation を指定した場合、その値はコンテナが配置されているコンテナインスタンスの使用可能なメモリリソースから減算されます。それ以外の場合、 メモリ の値が使用されます。詳細については、メモリ をご参照ください。
解決方法
開始する前に、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスが含まれている Amazon ECS クラスターがあることを確認します。クラスターの作成の詳細については、「Creating a cluster using the classic console」(従来のコンソールを使用したクラスターの作成) を参照してください。クラスターおよびコンテナインスタンスの設定の詳細については、「コンテナインスタンスメモリ管理」を参照してください。
コンテナインスタンスのメモリ割り当てを表示する
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [クラスター] を選択します。
- 作成したクラスターを選択します。
- [ECS Instances] ビューを選択し、[Container Instance] 列から、作成したクラスターに含まれているコンテナインスタンスを選択します。
注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリと等しいことが示されます。 - インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。
ソフト制限でタスク定義を作成する
- Amazon ECS コンソールから、ナビゲーションペインで、[タスク定義] を選択します。
- [Create new Task Definition] を選択します。
- 起動タイプとして、[EC2]、[Next step] の順に選択します。
- [Task Definition Name] に名前を入力します。
- [Container Definitions] セクションで、[Add container] を選択します。
- [Container name] に名前を入力します。
- [Image] に、nginx または環境に適した Docker イメージを入力します。
- [Memory Limits (MiB)] で、 [Soft limit] を選択し、700 と入力します。
- [追加]、[作成] の順に選択します。
ソフト制限でタスク定義を実行する
- [Amazon ECS コンソール] からナビゲーションペインで、[Clusters] を選択し、作成したクラスターを選択します。
- [Tasks] ビューを選択し、[Run new Task] を選択します。
- [Run Task] (タスクの実行) を選択します。
注: [Task Definition] (タスク定義) および [Cluster] (クラスター) には、先ほど作成したタスク定義とクラスターの名前が事前に入力されます。 - ソフト制限のタスクの [Last status] (最後のステータス) 列で [RUNNING] (実行中) と表示されたら、ナビゲーションペインから [Clusters] (クラスター) を選択します。
注 : タスクのステータスを [RUNNING] に更新するには、ページを更新します。 - [ECS Instances] (ECS インスタンス) ビューを選択し、[Container Instance] (コンテナインスタンス) 列からインスタンスを選択します。
注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリより小さいことが示されます。 - インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。
- ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。
- [Tasks] ビューを選択し、ソフト制限のタスクを選択して、[Stop] を選択します。
- [ECS Instances] (ECS インスタンス) ビューを選択し、[Container Instance] (コンテナインスタンス) 列からインスタンスを選択します。
注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリと等しいことが示されます。
ハード制限のあるタスク定義の新しいリビジョンを作成する
- Amazon ECS コンソールから、ナビゲーションペインで、[タスク定義] を選択します。
- ソフト制限を使用して作成したタスク定義を選択し、[Create new revision] を選択します。
- [Container Definitions] セクションの [Container Name] 列で、ソフト制限のタスク定義に追加したコンテナを選択します。
- [Memory Limits (MiB)] で、[Hard limit] を選択し、1000 と入力します。
- [更新]、[作成] の順に選択します。
ハード制限で改訂されたタスク定義を実行する
- [Amazon ECS コンソール] からナビゲーションペインで、[Clusters] を選択し、作成したクラスターを選択します。
- [Tasks] ビューを選択し、[Run new Task] を選択します。
- [Task Definition] で、作成したハード制限を持つタスク定義を選択し、[Run Task] を選択します。
- ハード制限のある改訂されたタスクの [Last status] 列で [RUNNING] と表示されたら、ナビゲーションペインから [Clusters] を選択します。
注: タスクのステータスを [RUNNING] (実行中) に更新するには、ページを更新します。 - [ECS Instances] (ECS インスタンス) ビューを選択し、[Container Instance] (コンテナインスタンス) 列からインスタンスを選択します。
注: [Details] (詳細) ペインには、[Available] (利用可能) 列の使用可能なメモリが [Registered] (登録済み) 列のメモリより小さいことが示されます。 - インスタンスのリソース使用状況に関する統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。
- ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。
- [Tasks] ビューを選択し、ハード制限のあるタスクを選択して、[Stop] を選択します。
- [ECS Instances] (ECS インスタンス) ビューを選択し、[Container Instance] (コンテナインスタンス) 列からインスタンスを選択します。
注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリと等しいことが示されます。
ソフト制限とハード制限の両方を使用してタスク定義の新しいリビジョンを作成する
- Amazon ECS コンソールから、ナビゲーションペインで、[タスク定義] を選択します。
- ハード制限を使用して作成したタスク定義を選択し、[Create new revision] を選択します。
- [Container Definitions] セクションの [Container Name] 列で、ハード制限のあるタスク定義に追加したコンテナを選択します。
- [Memory Limits (MiB)] で、 [Soft limit] を選択し、700 と入力します。
- [Add Hard limit] を選択し、 1200と入力します。
- [更新]、[作成] の順に選択します。
ソフト制限とハード制限の両方で改訂されたタスク定義を実行する
- Amazon ECS コンソールで、ナビゲーションペインから [Clusters] (クラスター) を選択し、作成したクラスターを選択します。
- [Tasks] (タスク) ビューを選択し、[Run new Task] (新しいタスクの実行) を選択します。
- [Task Definition] (タスク定義) で、ソフト制限とハード制限の両方で作成したタスク定義を選択し、[Run Task] (タスクの実行) を選択します。
- タスクの [前回のステータス] 列に RUNNING と表示されたら、ナビゲーションペインから [クラスター] を選択します。
注 : タスクのステータスを [RUNNING] に更新するには、ページを更新します。 - ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。
- Tasks ビューを選択し、ソフト制限とハード制限の両方を持つタスクを選択して、 Stopを選択します。
- [ECS Instances] (ECS インスタンス) ビューを選択し、[Container Instance] (コンテナインスタンス) 列からインスタンスを選択します。
注: [Details] ペインには、[Available] 列のメモリが [Registered] 列のメモリより小さいことが示されます。 - インスタンスのリソース使用量の統計については、SSH を使用してインスタンスに接続し、docker stats コマンドを実行します。
関連情報
Limit a container's access to memory (メモリへのコンテナのアクセスを制限する)