このページでは、メモリ上限の設定方法について説明します。
メモリ使用量について
許容されるメモリ上限を超える Cloud Run コンテナ インスタンスは終了します。
コンテナ インスタンスの使用可能なメモリは次のとおりです。
- アプリケーション実行可能ファイルを実行する(実行可能ファイルをメモリに読み込む必要があるため)
- アプリケーション プロセスでメモリを割り当てる
- ファイル システムへのファイルの書き込み
デプロイされたコンテナ イメージのサイズは、使用可能なメモリにはカウントされません。
メモリ上限の設定と更新
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
デフォルトでは、リビジョンの各コンテナ インスタンスに割り当てられるメモリは 256 MiB です。
4 GiB を超えるメモリ制限を設定するには、2 つ以上の vCPU が必要です。
新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Cloud Console、gcloud コマンドライン、YAML ファイルを使用してメモリ上限を設定できます。
Console
デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
[詳細設定] で [コンテナ] をクリックします。
[割り当てられたメモリ] プルダウン リストから目的のメモリサイズを選択します。
[作成] または [デプロイ] をクリックします。
コマンドライン
次のコマンドを使用して、特定のサービスのメモリ割り当てを更新します。
gcloud run services update SERVICE --memory SIZE
SERVICE はサービス名に、SIZE は必要なメモリサイズに置き換えます。サイズの書式は、固定小数点または浮動小数点の後に単位が続きます(G
、M
、K
はそれぞれ GB、MB、KB を表します)。また 2 の累乗で表すこともできます(Gi
、Mi
、Ki
はそれぞれ GiB、MiB、KiB を表します)。
デプロイ中にメモリ制限を設定するには、次のコマンドを使用します。
gcloud run deploy --image IMAGE_URL --memory SIZE
次のように置き換えます。
IMAGE_URL
は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest
など)に置き換えます。- SIZE は、上記の値で置き換えます。
YAML
既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export
コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud beta run services replace
コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。
次のコマンドで、構成を表示してダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
memory
属性を更新します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE resources: limits: memory: SIZE
次のように置き換えます。
- SERVICE は、Cloud Run サービスの名前に置き換えます。
- IMAGE は、コンテナ イメージの URL に置き換えます。
- SIZE は、目的のメモリサイズに置き換えます。書式は、固定小数点または浮動小数点の後に単位が続きます(
G
、M
、K
はそれぞれギガバイト、メガバイト、キロバイトを表します)。また 2 の累乗で表すこともできます(Gi
、Mi
、Ki
はそれぞれギビバイト、メビバイト、キビバイトを表します)。
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud beta run services replace service.yaml
メモリの最大量
構成できるメモリの最大容量は 8 ギビバイト(8Gi
)です。
メモリの最適化
サービスのピーク時のメモリ要件は、(標準メモリ)+(リクエストあたりのメモリ)×(サービスの同時実行)によって算定できます。
また、次の点に注意してください。
サービスの同時実行数を増やす場合は、ピーク時の使用状況を考慮してメモリ制限も上げる必要があります。
サービスの同時実行数を減らす場合は、メモリ使用量を節約するため、メモリ制限も下げることを検討してください。
リクエストごとのメモリ使用量を最小限に抑える方法については、グローバル変数に関する開発のヒントをご覧ください。