このページでは、メモリ上限の設定方法について説明します。
メモリ使用量を把握する
許容されるメモリ上限を超える Cloud Run インスタンスは終了します。
インスタンスの使用可能なメモリは次のとおりです。
- アプリケーションの実行可能ファイルの実行(実行可能ファイルをメモリに読み込む必要があるため)
- アプリケーション プロセスでのメモリの割り当て
- ファイル システムへのファイルの書き込み
デプロイされたコンテナ イメージのサイズは、使用可能なメモリにはカウントされません。
メモリ上限の設定と更新
Cloud Run サービスのメモリ上限を設定できます。デフォルトでは、リビジョンの各インスタンスに割り当てられるメモリは 512 MiB です。
必要な最小 CPU
メモリの上限を設定する場合は、次の最小 CPU が必要です。
メモリ | 必要な最小 CPU |
---|---|
4 GiB より大きい | 2 |
8 GiB より大きい | 4 |
16 GiB より大きい | 6 |
24 GiB より大きい | 8 |
メモリの最大量
構成できるメモリの最大容量は 32 ギビバイト(32 Gi
)です。
最小メモリ
最小メモリの設定は、第 1 世代または第 2 世代の実行環境を使用するかどうかによって異なります。
- 第 1 世代は 128 MiB
- 第 2 世代は 512 MiB
必要なロール
Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run サービスに対する Cloud Run デベロッパー(
roles/run.developer
) -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
メモリ上限を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
Cloud Run サービスでは、新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud コマンドライン、または YAML ファイルを使用してメモリ上限を設定できます。
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
デプロイ先の新しいサービスを構成する場合は、[サービスを作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- [メモリ] プルダウン リストから目的のメモリサイズを選択します。
[作成] または [デプロイ] をクリックします。
gcloud
次のコマンドを使用して、特定のサービスのメモリ割り当てを更新します。
gcloud run services update SERVICE --memory SIZE
SERVICE はサービス名に、SIZE は必要なメモリサイズに置き換えます。サイズの書式は、固定小数点または浮動小数点の後に単位が続きます(G
、M
はそれぞれ GB、MB を表します)。また 2 の累乗で表すこともできます(Gi
、Mi
はそれぞれ 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
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
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 は、目的のメモリサイズに置き換えます。書式は、固定小数点または浮動小数点の後に単位が続きます(
G
、M
はそれぞれ GB、MB を表します)。また 2 の累乗で表すこともできます(Gi
、Mi
はそれぞれ GiB、MiB を表します)。 - REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。
SERVICE-
で始まる- 小文字、数字、
-
のみが使用されている - 末尾が
-
ではない - 63 文字以内である
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Terraform 構成の template.containers.resources.limits
の google_cloud_run_v2_service
リソースに次の内容を追加します。512Mi
は、サービスに必要なメモリの上限に置き換えます。
サービスのメモリを最適化する
Cloud Run サービスの場合、サービスのピーク時のメモリ要件は、(標準メモリ)+(リクエストあたりのメモリ)×(サービスの同時実行)によって算定できます。
また、次の点に注意してください。
サービスの同時実行数を増やす場合は、ピーク時の使用状況を考慮してメモリ制限も上げる必要があります。
サービスの同時実行数を減らす場合は、メモリ使用量を節約するため、メモリ制限も下げることを検討してください。
リクエストごとのメモリ使用量を最小限に抑える方法については、グローバル変数に関する開発のヒントをご覧ください。
メモリ上限の設定を表示する
Cloud Run サービスの現在のメモリ上限設定を表示するには:
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
目的のサービスをクリックして、[サービスの詳細] ページを開きます。
[変更内容] タブをクリックします。
右側の詳細パネルの [コンテナ] タブに、メモリ上限設定が表示されます。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、メモリ上限設定を見つけます。