メモリ上限を構成する

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

メモリ使用量を把握する

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

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

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

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

メモリ上限の設定と更新

Cloud Run サービスのメモリ上限を設定できます。デフォルトでは、リビジョンの各インスタンスに割り当てられるメモリは 512 MiB です。

必要な最小 CPU

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

メモリ 必要な最小 CPU
4 GiB より大きい 2
8 GiB より大きい 4
16 GiB より大きい 6
24 GiB より大きい 8

メモリの最大量

構成できるメモリの最大容量は 32 GiB(32 Gi)です。

最大メモリの上限を適用するには、カスタムの組織のポリシーを使用します。

最小メモリ

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

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

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

メモリ上限を構成する

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

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

コンソール

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

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

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

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

    画像

    • [メモリ] プルダウン リストから目的のメモリサイズを選択します。
  5. [作成] または [デプロイ] をクリックします。

gcloud

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

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 など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
  • SIZE は、上記で説明した値に置き換えます。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    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 など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
    • SIZE は、目的のメモリサイズに置き換えます。書式は、固定小数点または浮動小数点の後に単位が続きます(GM はそれぞれ GB、MB を表します)。また 2 の累乗で表すこともできます(GiMi はそれぞれ GiB、MiB を表します)。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

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

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-memory-limits"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      resources {
        limits = {
          # Memory usage limit (per container)
          memory = "512Mi"
        }
      }
    }
  }
}

サービスのメモリを最適化する

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

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

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

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

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

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

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

コンソール

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

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

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

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

gcloud

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

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