メモリ上限を構成する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このページでは、メモリ上限の設定方法について説明します。

メモリ使用量について

許容されるメモリ上限を超える Cloud Run コンテナ インスタンスは終了します。

コンテナ インスタンスの使用可能なメモリは次のとおりです。

  • アプリケーション実行可能ファイルを実行する(実行可能ファイルをメモリに読み込む必要があるため)
  • アプリケーション プロセスでメモリを割り当てる
  • ファイル システムへのファイルの書き込み

デプロイされたコンテナ イメージのサイズは、使用可能なメモリにはカウントされません。

メモリ上限の設定と更新

Cloud Run のサービスとジョブには、メモリの上限を設定できます。デフォルトでは、リビジョンまたはジョブの各コンテナ インスタンスに割り当てられるメモリは 512 MiB です。16 GiB 以上のメモリ上限はプレビュー版の機能です。

必要な最小 CPU

メモリの上限を設定する場合は、次の最小 CPU が必要です。

メモリ 必要な最小 CPU 数
8 GiB より大きい 4
16 GiB 以上プレビュー 6
24 GiB 以上プレビュー 8

メモリの最大量

構成できるメモリの最大容量は 32 ギビバイト(32 Gi)です。

最小メモリ

最小メモリ設定は、第 1 世代または第 2 世代の実行環境を使用するかどうかによって異なります。

  • 第 1 世代は 128 MiB
  • 第 2 世代は 512 MiB

Cloud Run サービスの場合

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

Cloud Run サービスでは、新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud コマンドライン、または YAML ファイルを使用してメモリ上限を設定できます。

コンソール

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、接続、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

  5. [メモリ] プルダウン リストから目的のメモリサイズを選択します。

  6. [作成] または [デプロイ] をクリックします。

コマンドライン

次のコマンドを使用して、特定のサービスのメモリ割り当てを更新します。

gcloud run services update SERVICE --memory SIZE

SERVICE はサービス名に、SIZE は必要なメモリサイズに置き換えます。サイズの書式は、固定小数点または浮動小数点の後に単位が続きます(GM はそれぞれ GB、MB を表します)。また 2 の累乗で表すこともできます(GiMi はそれぞれ GiB、MiB を表します)。

デプロイ中にメモリ制限を設定するには、次のコマンドを使用します。

gcloud run deploy --image IMAGE_URL --memory SIZE

次のように置き換えます。

  • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。
  • SIZE は、上記の値で置き換えます。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. memory 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)で置き換えます。
    • SIZE は、目的のメモリサイズに置き換えます。書式は、固定小数点または浮動小数点の後に単位が続きます(GM はそれぞれ GB、MB を表します)。また 2 の累乗で表すこともできます(GiMi はそれぞれ GiB、MiB を表します)。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

Terraform

Terraform 構成の template.spec.containersgoogle_cloud_run_service リソースに次の内容を追加します。512Mi は、サービスに必要なメモリの上限に置き換えます。

resources {
  limits = {
    # CPU usage limit
    # https://cloud.google.com/run/docs/configuring/cpu
    cpu = "1000m" # 1 vCPU

    # Memory usage limit (per container)
    # https://cloud.google.com/run/docs/configuring/memory-limits
    memory = "512Mi"
  }
}

Google Cloud プロジェクトで Terraform 構成を適用するには、次の手順を行います。

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用する Google Cloud プロジェクトを設定します。
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. ディレクトリを作成し、そのディレクトリで新規ファイルを開きます。ファイル名には .tf 拡張子が必要です(例: main.tf)。
    mkdir DIRECTORY && cd DIRECTORY && nano main.tf
    
  4. サンプルを main.tf にコピーします。
  5. 環境に適用するサンプル パラメータを確認し、変更します。
  6. Ctrl-x を押してから y を押して、変更を保存します。
  7. Terraform を初期化します。
    terraform init
  8. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  9. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。

  10. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

Cloud Run ジョブの場合

Cloud Run ジョブには 512 MiB 以上を指定する必要があります。Cloud Run ジョブのメモリを指定するには:

コンソール

  1. Cloud Run に移動します

  2. 新しいジョブを構成する場合は、[ジョブ] タブをクリックし、必要に応じて初期ジョブ設定ページを入力します。既存のジョブを構成する場合は、ジョブをクリックして [編集] をクリックします。

  3. [コンテナ、変数とシークレット、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

  5. [メモリ] プルダウン リストから目的のメモリサイズを選択します。

  6. [作成] または [更新] をクリックします。

コマンドライン

  1. ジョブを作成するときにメモリ制限を設定するには:

    gcloud beta run jobs create JOB_NAME --image IMAGE_URL --memory SIZE

    次のように置き換えます。

    • JOB_NAME: ジョブの名前。
    • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/job:latest など)。
    • SIZE は、目的のメモリサイズに置き換えます。サイズの書式は、固定小数点または浮動小数点の後に単位が続きます(GM はそれぞれ GB、MB を表します)。また 2 の累乗で表すこともできます(GiMi はそれぞれ GiB、MiB を表します)。
  2. ジョブを更新するときにメモリ制限を設定するには:

    gcloud beta run jobs update JOB_NAME --memory SIZE

サービスのメモリ最適化

Cloud Run サービスの場合、サービスのピーク時のメモリ要件は、(標準メモリ)+(リクエストあたりのメモリ)×(サービスの同時実行)によって算定できます。

また、次の点に注意してください。

  • サービスの同時実行数を増やす場合は、ピーク時の使用状況を考慮してメモリ制限も上げる必要があります。

  • サービスの同時実行数を減らす場合は、メモリ使用量を節約するため、メモリ制限も下げることを検討してください。

リクエストごとのメモリ使用量を最小限に抑える方法については、グローバル変数に関する開発のヒントをご覧ください。

メモリ上限の設定を表示する

Cloud Run サービスの現在のメモリ上限設定を表示するには:

コンソール

  1. Cloud Run に移動します

  2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

  3. [変更内容] タブをクリックします。

  4. 右側の詳細パネルの [コンテナ] タブに、メモリ上限設定が表示されます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、メモリ上限設定を見つけます。

Cloud Run ジョブの現在のメモリ上限設定を表示するには:

コンソール

  1. Cloud Run ジョブに移動

  2. 目的のジョブをクリックして、[ジョブの詳細] ページを開きます。

  3. [構成] タブをクリックします。

  4. 構成の詳細でメモリ上限の設定を見つけます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud beta run jobs describe JOB_NAME
  2. 返された構成で、メモリ上限設定を見つけます。