Amazon Elastic Container Service (Amazon ECS) を使用してタスクにメモリを割り当てようとしています。
簡単な説明
Amazon ECS では、2 種類のタスク定義でタスクのメモリを定義できます。
Amazon ECS は、memoryReservation と memory パラメータのどちらを使用するかに応じて、サービスのメモリ使用率メトリクスを計算します。詳細については、「サービスレベルの CPU とメモリの使用率」を参照してください。
次の表を参考に、Amazon Elastic Compute Cloud (Amazon EC2) と AWS Fargate 起動タイプに設定する最小限のオプションをレビューしてください。
| | |
|---|
| タスクサイズを使用しないタスク | タスクサイズを使用するタスク |
| タスクの CPU | オプション構成 | 必須構成 |
| タスクメモリ | オプション構成 | 必須構成 |
| コンテナ CPU | オプション構成 | オプション構成 |
| コンテナメモリ | 必須構成 | オプション構成 |
| 起動タイプの互換性 | EC2 のみ | EC2 と Fargate |
タスクサイズのないタスクでは、タスクにコンテナメモリを設定する必要があります。これらのタスクは Amazon EC2 起動タイプにのみ使用できます。タスクサイズが定義されたタスクでは、Amazon EC2 または AWS Fargate 起動タイプ用のタスクを使用できます。次に、タスクメモリと CPU を設定します。詳細については、「Fargate 起動タイプ用の Amazon ECS タスク定義パラメータ」を参照してください。
解決策
コンテナのメモリ割り当てをレビューする
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [クラスター] を選択し、該当するクラスターを選択します。
- クラスターの詳細ページで [インフラストラクチャ] を選択します。
- [コンテナインスタンス] でクラスターに登録されているコンテナインスタンスの ID を選択します。
- [リソースとネットワーク] で [メモリ] の詳細をレビューします。
memory パラメータからは、次のクラスターの詳細に関する情報を取得できます。
注: インスタンスのリソース使用状況に関する統計情報を取得するには、SSH または SSM を使用してインスタンスに接続します。次に、docker stats コマンドを実行します。詳細については、Docker のウェブサイトで「Docker コンテナの統計情報」を参照してください。
EC2 起動タイプのタスク定義でメモリを正しく指定するには、コンテナインスタンスで使用可能なメモリを把握する必要があります。タスク定義で指定されたメモリが、登録されたインスタンスで使用可能なメモリよりも大きい場合、そのタスクは失敗します。
Amazon ECS コンソールの JSON エディタを使用する
Amazon ECS コンソールの JSON エディタを使用すると、Amazon ECS タスク定義を作成し、タスクにメモリを割り当てられます。詳細については、「手順」を参照してください。
Amazon ECS コンソールを使用する
Amazon ECS コンソールを使用してタスクにメモリを割り当てるには、次のいずれかのタスクを実行します。
**ソフト制限付きのタスク定義を作成する (memoryReservation) **
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [タスク定義] を選択し、[新しいタスク定義の作成] を選択します。
- [タスク定義の作成] 画面で次の情報を入力します。
[タスク定義ファミリ名] にタスクの名前を入力します。
[起動タイプ] で [Amazon EC2 インスタンス] を選択します。
[コンテナ] セクションの [コンテナの詳細] にコンテナの名前とイメージの URI を入力します。
[リソース割り当て制限] で [メモリのソフト制限] に値を入力します。次に、[作成] を選択します。
注: メモリのソフト制限は、memoryReservation パラメータにマッピングされます。
ハード制限 (メモリ) を含むタスク定義を作成する
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [タスク定義] を選択し、[新しいタスク定義の作成] を選択します。
- [タスク定義の作成] 画面で次の情報を入力します。
[タスク定義ファミリ名] にタスクの名前を入力します。
[起動タイプ] で [Amazon EC2 インスタンス] を選択します。
[コンテナ] セクションの [コンテナの詳細] にコンテナの名前とイメージの URI を入力します。
[リソース割り当て制限] で [メモリのハード制限] に値を入力します。次に、[作成] を選択します。
注: メモリのハード制限は、memory パラメータにマッピングされます。
コンテナのメモリ割り当てをレビューする
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [クラスター] を選択し、該当するクラスターを選択します。
- [クラスターの詳細] ページで [インフラストラクチャ] タブを選択します。
- クラスターに登録されているコンテナインスタンスを選択します。
- [コンテナインスタンス] タブの [リソース] で、[登録されたメモリ] 値を確認します。
注: 実行中のタスクが 0 の場合、[登録されたメモリ] 値は [使用可能なメモリ] の値と等しくなります。
注: インスタンスのリソース使用状況に関する統計情報を取得するには、SSH または SSM を使用してインスタンスに接続します。次に、docker stats コマンドを実行します。詳細については、Docker のウェブサイトで「Docker コンテナの統計情報」を参照してください。
サービスの一環で実行されるタスクでは、サービスのメモリ使用率メトリクスでは、総メモリリソースに対する使用率はパーセンテージとしてレポートされます。これらのリソースは、タスク定義でサービスに対して指定します。詳細については、「サービスレベルの CPU とメモリの使用率」を参照してください。
クラスターに関する Container Insights を参照しても、MemoryUtilized メトリクスを確認できます。このメトリクスは、タスクとコンテナが使用しているメモリを示します。
関連情報
Amazon ECS が CPU とメモリリソースを管理するしくみ
Amazon ECS でのコンテナスワップメモリスペースを管理する
Amazon EC2 起動タイプ用の Amazon ECS クラスターを作成する
Amazon ECS Linux コンテナインスタンスメモリを予約する
リソースの制約 (Docker のウェブサイト)