設定服務的記憶體限制

您可以為 Cloud Run 服務佈建不同大小的記憶體。本頁說明如何指定服務可用的記憶體量。

瞭解記憶體用量

超出允許記憶體限制的 Cloud Run 執行個體會遭到終止。

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

  • 執行服務可執行檔,因為可執行檔必須載入記憶體
  • 在服務程序中配置記憶體
  • 將檔案寫入檔案系統

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

設定及更新記憶體限制

您可以為 Cloud Run 服務設定記憶體限制。 根據預設,分配給修訂版本每個執行個體的記憶體為 512 MiB,分配給函式的記憶體為 256 MiB。

CPU 最低需求

您選擇的記憶體配置量,會對應到服務的 CPU 最低用量。設定記憶體限制時,必須符合下列最低 CPU 限制:

記憶體 所需 CPU 數量下限
128 MiB 0.083 個 vCPU
256 MiB .167 個 vCPU
512 MiB 0.333 個 vCPU
1 GiB 0.583 個 vCPU
2 GiB 1 個 vCPU
超過 4 GiB 2 個 vCPU
超過 8 GiB 4 個 vCPU
超過 16 GiB 6 個 vCPU
超過 24 GiB 8 個 vCPU
如果使用的記憶體少於 512 MiB,請使用第一代執行環境

記憶體大小上限

可設定的記憶體最大量為 32 GiB (32 Gi)。

您可以使用自訂機構政策,強制執行記憶體上限。

最低記憶體

最低記憶體設定會因您使用的第一代或第二代執行環境而異:

  • 第一代為 128 MiB
  • 第二代為 512 MiB

必要的角色

如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限管理存取權

設定記憶體限制

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

如果是 Cloud Run 服務,您可以在 Google Cloud 控制台、gcloud 指令列或 YAML 檔案中,建立新服務部署新版本時設定記憶體限制:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

  3. 如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。

  4. 按一下「容器」分頁標籤。

    圖片

    • 從「記憶體」下拉式清單中選取想要的記憶體大小。
  5. 按一下 [Create] (建立) 或 [Deploy] (部署)

gcloud

您可以使用以下指令更新特定服務的記憶體分配

gcloud run services update SERVICE --memory SIZE

SERVICE 改為您的服務名稱,並將 SIZE 改為需要的記憶體大小。大小的格式為定點數或浮點數,後面加上單位 GM,分別對應於 GB 或 MB;或者是使用 2 的 n 次冪當量 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。網址的格式為 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。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • SIZE 替換為所需的記憶體大小。 格式為定點數或浮點數,後面加上單位 GM,分別對應於 GB 或 MB;或者是使用 2 的 n 次冪當量 GiMi,分別對應於 GiB 或 MiB。
    • REVISION,並提供新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
      • 開頭為「SERVICE-
      • 只能包含小寫字母、數字和 -
      • 結尾不是 -
      • 不超過 63 個半形字元
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列項目新增至 google_cloud_run_v2_service 資源:

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"
        }
      }
    }
  }
}

template.containers.resources.limits 下方,將 512Mi 替換為服務所需的記憶體上限。

為服務最佳化記憶體

如果是 Cloud Run 服務,可以使用下列方式找出服務的記憶體最大需求:(固定佔用記憶體) + (每個要求的記憶體) * (服務並行)

視情況,

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

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

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

查看記憶體限制設定

如要查看 Cloud Run 服務目前的記憶體上限設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 按一下感興趣的服務,開啟「服務詳細資料」頁面。

  3. 按一下「Revisions」(修訂版本) 分頁標籤。

  4. 在右側的詳細資料面板中,記憶體限制設定會列在「容器」分頁下方。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找出記憶體限制設定。