スキップしてコンテンツを表示

Amazon ECS でタスクにメモリを割り当てる方法を教えてください。

所要時間2分
0

Amazon Elastic Container Service (Amazon ECS) を使用してタスクにメモリを割り当てようとしています。

簡単な説明

Amazon ECS では、2 種類のタスク定義でタスクのメモリを定義できます。

Amazon ECS は、memoryReservationmemory パラメータのどちらを使用するかに応じて、サービスのメモリ使用率メトリクスを計算します。詳細については、「サービスレベルの CPU とメモリの使用率」を参照してください。

次の表を参考に、Amazon Elastic Compute Cloud (Amazon EC2) と AWS Fargate 起動タイプに設定する最小限のオプションをレビューしてください。

タスクサイズを使用しないタスクタスクサイズを使用するタスク
タスクの CPUオプション構成必須構成
タスクメモリオプション構成必須構成
コンテナ CPUオプション構成オプション構成
コンテナメモリ必須構成オプション構成
起動タイプの互換性EC2 のみEC2 と Fargate

タスクサイズのないタスクでは、タスクにコンテナメモリを設定する必要があります。これらのタスクは Amazon EC2 起動タイプにのみ使用できます。タスクサイズが定義されたタスクでは、Amazon EC2 または AWS Fargate 起動タイプ用のタスクを使用できます。次に、タスクメモリと CPU を設定します。詳細については、「Fargate 起動タイプ用の Amazon ECS タスク定義パラメータ」を参照してください。

解決策

コンテナのメモリ割り当てをレビューする

次の手順を実行します。

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで [クラスター] を選択し、該当するクラスターを選択します。
  3. クラスターの詳細ページで [インフラストラクチャ] を選択します。
  4. [コンテナインスタンス] でクラスターに登録されているコンテナインスタンスの ID を選択します。
  5. [リソースとネットワーク][メモリ] の詳細をレビューします。

memory パラメータからは、次のクラスターの詳細に関する情報を取得できます。

  • RegisterContainerInstance API コールの実行時に使用可能なメモリの総容量
  • インスタンスで実行される ECS タスクに割り当てられた使用中のメモリ
  • 新しいタスクに割り当てられる、使用可能なメモリ

注: インスタンスのリソース使用状況に関する統計情報を取得するには、SSH または SSM を使用してインスタンスに接続します。次に、docker stats コマンドを実行します。詳細については、Docker のウェブサイトで「Docker コンテナの統計情報」を参照してください。

EC2 起動タイプのタスク定義でメモリを正しく指定するには、コンテナインスタンスで使用可能なメモリを把握する必要があります。タスク定義で指定されたメモリが、登録されたインスタンスで使用可能なメモリよりも大きい場合、そのタスクは失敗します。

Amazon ECS コンソールの JSON エディタを使用する

Amazon ECS コンソールの JSON エディタを使用すると、Amazon ECS タスク定義を作成し、タスクにメモリを割り当てられます。詳細については、「手順」を参照してください。

Amazon ECS コンソールを使用する

Amazon ECS コンソールを使用してタスクにメモリを割り当てるには、次のいずれかのタスクを実行します。

**ソフト制限付きのタスク定義を作成する (memoryReservation) **

次の手順を実行します。

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで [タスク定義] を選択し、[新しいタスク定義の作成] を選択します。
  3. [タスク定義の作成] 画面で次の情報を入力します。
    [タスク定義ファミリ名] にタスクの名前を入力します。
    [起動タイプ][Amazon EC2 インスタンス] を選択します。
    [コンテナ] セクションの [コンテナの詳細] にコンテナの名前とイメージの URI を入力します。
    [リソース割り当て制限][メモリのソフト制限] に値を入力します。次に、[作成] を選択します。
    注: メモリのソフト制限は、memoryReservation パラメータにマッピングされます。

ハード制限 (メモリ) を含むタスク定義を作成する

次の手順を実行します。

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで [タスク定義] を選択し、[新しいタスク定義の作成] を選択します。
  3. [タスク定義の作成] 画面で次の情報を入力します。
    [タスク定義ファミリ名] にタスクの名前を入力します。
    [起動タイプ][Amazon EC2 インスタンス] を選択します。
    [コンテナ] セクションの [コンテナの詳細] にコンテナの名前とイメージの URI を入力します。
    [リソース割り当て制限][メモリのハード制限] に値を入力します。次に、[作成] を選択します。
    注: メモリのハード制限は、memory パラメータにマッピングされます。

コンテナのメモリ割り当てをレビューする

次の手順を実行します。

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで [クラスター] を選択し、該当するクラスターを選択します。
  3. [クラスターの詳細] ページで [インフラストラクチャ] タブを選択します。
  4. クラスターに登録されているコンテナインスタンスを選択します。
  5. [コンテナインスタンス] タブの [リソース] で、[登録されたメモリ] 値を確認します。
    注: 実行中のタスクが 0 の場合、[登録されたメモリ] 値は [使用可能なメモリ] の値と等しくなります。

注: インスタンスのリソース使用状況に関する統計情報を取得するには、SSH または SSM を使用してインスタンスに接続します。次に、docker stats コマンドを実行します。詳細については、Docker のウェブサイトで「Docker コンテナの統計情報」を参照してください。

サービスの一環で実行されるタスクでは、サービスのメモリ使用率メトリクスでは、総メモリリソースに対する使用率はパーセンテージとしてレポートされます。これらのリソースは、タスク定義でサービスに対して指定します。詳細については、「サービスレベルの CPU とメモリの使用率」を参照してください。

クラスターに関する Container Insights を参照しても、MemoryUtilized メトリクスを確認できます。このメトリクスは、タスクとコンテナが使用しているメモリを示します。

関連情報

Amazon ECS が CPU とメモリリソースを管理するしくみ

Amazon ECS でのコンテナスワップメモリスペースを管理する

Amazon EC2 起動タイプ用の Amazon ECS クラスターを作成する

Amazon ECS Linux コンテナインスタンスメモリを予約する

リソースの制約 (Docker のウェブサイト)

AWS公式更新しました 8ヶ月前
コメントはありません