メモリ上限の構成

Knative serving でコンテナ インスタンスが使用するメモリの上限を設定する方法について説明します。

メモリ使用量について

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

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

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

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

メモリの最大量

構成できる最大メモリ容量は GKE クラスタの構成によって制限されます。

メモリの最適化

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

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

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

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

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

メモリ上限の設定と更新

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

新しいサービスをデプロイするか、既存のサービスを更新してリビジョンをデプロイする際に、Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用してメモリの上限を設定できます。

コンソール

  1. Google Cloud コンソールで Knative serving に移動します。

    Knative serving に移動

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

  3. [詳細設定] で [コンテナ] をクリックします。

  4. [割り当てられたメモリ] プルダウン リストから目的のメモリサイズを選択します。

  5. [次へ] をクリックして、次のセクションに進みます。

  6. [このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。

  7. [作成] をクリックしてイメージを Knative serving にデプロイし、デプロイの完了を待ちます。

コマンドライン

  • 既存のサービスの場合は、--memory パラメータを指定して gcloud run services update コマンドを実行し、メモリの上限を更新します。

    gcloud run services update SERVICE --memory SIZE
    

    以下のように置き換えます。

    • SERVICE は、実際のサービスの名前に置き換えます。
    • SIZE は、目的のメモリサイズに置き換えます。サイズの書式は、固定小数点または浮動小数点の後に単位が続きます(GMK はそれぞれ GB、MB、KB を表します)。また 2 の累乗で表すこともできます(GiMiKi はそれぞれ GiB、MiB、KiB を表します)。
  • 新しいサービスの場合は、--memory パラメータを指定して gcloud run deploy コマンドを実行し、メモリの上限を設定します。

    gcloud run deploy SERVICE --image=IMAGE_URL --memory SIZE
    

    以下のように置き換えます。

    • SERVICE: 実際のサービスの名前。
    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/cloudrun/hello など)に置き換えます。
    • SIZE は、目的のメモリサイズに置き換えます。サイズの書式は、固定小数点または浮動小数点の後に単位が続きます(GMK はそれぞれ GB、MB、KB を表します)。また 2 の累乗で表すこともできます(GiMiKi はそれぞれ GiB、MiB、KiB を表します)。

YAML

--format=export フラグを使用して、gcloud run services describe コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud run services replace コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。

  1. ローカル ワークスペースの service.yaml という名前のファイルにサービスの構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE は、Knative serving サービスの名前に置き換えます。

  2. ローカル ファイルで memory 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
    spec:
      template:
        spec:
          containers:
          – image: IMAGE_URL
            resources:
              limits:
                memory: SIZE

    SIZE は、目的のメモリサイズに置き換えます。書式は、固定小数点または浮動小数点の後に単位が続きます(GMK はそれぞれ GB、MB、KB を表します)。また 2 の累乗で表すこともできます(GiMiKi はそれぞれ GiB、MiB、KiB を表します)。

  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml