設定記憶體限制

瞭解如何為 Knative Serving 中的容器執行個體設定記憶體用量限制。

瞭解記憶體用量

超出允許記憶體限制的 Knative serving 容器執行個體會遭到終止。

下列項目會計入容器執行個體的可用記憶體:

  • 執行應用程式可執行檔 (因為可執行檔必須載入記憶體)
  • 在應用程式程序中分配記憶體
  • 將檔案寫入檔案系統

部署的容器映像檔大小不會計入可用記憶體。

記憶體大小上限

可設定的記憶體最大量受限於 GKE 叢集的設定。

最佳化記憶體

您可以使用下列方式判斷服務的記憶體最大需求:(固定佔用記憶體) + (每個要求的記憶體) * (服務並行)

視情況,

  • 若您提供並行服務,您也需要增加記憶體限制以應付最大使用量。

  • 若減少並行服務,即可考慮降低記憶體限制,以節省記憶體用量費用。

如需最小化每個要求的記憶體用量指南,請參閱全域變數的開發提示

設定並更新記憶體限制

變更任何設定都會建立新的修訂版本。除非您明確做出更新,改變這項設定,否則後續的修訂版本也會自動取得這個設定。

部署新服務或更新現有服務並部署修訂版本時,可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 檔案設定記憶體限制:

控制台

  1. 前往 Google Cloud 控制台的 Knative Serving:

    前往 Knative serving

  2. 如要設定要部署的新服務,請按一下「Create Service」(建立服務)。如要設定現有服務,請按一下該服務,然後按一下「編輯及部署新的修訂版本」

  3. 在「進階設定」下方,按一下「容器」

  4. 從「已分配的記憶體」下拉式清單中選取想要的記憶體大小。

  5. 按一下「下一步」繼續前往下一個部分。

  6. 在「設定這項服務的觸發方式」部分,選取要用來叫用服務的連線。

  7. 按一下「建立」,將映像檔部署到 Knative serving,然後等待部署作業完成。

指令列

  • 如為現有服務,請執行 gcloud run services update 指令並搭配 --memory 參數,更新記憶體限制:

    gcloud run services update SERVICE --memory SIZE

    更改項目:

    • SERVICE 改為您的服務名稱。
    • SIZE 替換為所需的記憶體大小。記憶體大小格式為固定點數或浮點數,後面加上單位 GMK,分別對應於 GB、MB 或 KB;或者是使用 2 的 n 次冪當量 GiMiKi,分別對應於 GiB、MiB 或 KiB。
  • 如為新服務,請執行 gcloud run deploy 指令並加上 --memory 參數,設定記憶體限制:

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

    更改項目:

    • SERVICE 改為您的服務名稱。
    • IMAGE_URL,並參照容器映像檔,例如 gcr.io/cloudrun/hello
    • SIZE 替換為所需的記憶體大小。記憶體大小格式為固定點數或浮點數,後面加上單位 GMK,分別對應於 GB、MB 或 KB;或者是使用 2 的 n 次冪當量 GiMiKi,分別對應於 GiB、MiB 或 KiB。

YAML

您可以使用 gcloud run services describe 指令,透過 --format=export 旗標將現有服務的設定下載至 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 的 n 次冪當量 GiMiKi,分別對應於 GiB、MiB 或 KiB。

  3. 使用下列指令,以新設定取代服務:

    gcloud run services replace service.yaml