設定服務的記憶體限制

您可以選擇要為 Cloud Run 服務提供的記憶體量。本頁面說明如何指定服務可用的記憶體量。

瞭解記憶體用量

如果 Cloud Run 執行個體超過允許的記憶體限制,就會終止。

執行個體的可用記憶體必須足以:

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

部署的容器映像檔大小不會影響執行個體的可用記憶體。

設定及更新記憶體上限

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

設定 CPU 值時所需的記憶體

設定 CPU 值時,必須提供下列記憶體:

CPU 記憶體需求
.08 個 vCPU 最多 512 MiB
.5 個 vCPU 最多 1 GiB
1 個 vCPU 最多 4 GiB
2 個 vCPU 最多 8 GiB
4 個 vCPU 2 至 16 GiB
6 個 vCPU 4 至 24 GiB
8 個 vCPU 4 至 32 GiB
如果使用的記憶體少於 512 MiB,請使用第一代執行環境。

記憶體大小上限

可設定的記憶體容量上限為 32 gibibyte (32 Gi)。

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

記憶體下限

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

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

費用注意事項

Cloud Run 服務的費用取決於記憶體設定、資源啟用時間長度等因素。過度佈建資源可能會增加成本。如要判斷最適合資源的記憶體設定,請按照下列步驟操作:

  1. 建立初始基準設定。
  2. 在測試系統負載時,透過 Cloud Monitoring 監控記憶體使用率指標。
  3. 視需要調整設定。

如果記憶體使用率持續偏低,建議減少分配的記憶體。如果延遲時間過長,且記憶體使用率接近 100%,建議您增加分配的記憶體。如果發生記憶體不足 (OOM) 錯誤,請增加分配的記憶體,或修改應用程式,避免記憶體流失並減少記憶體用量。請參閱 Cloud Monitoring 資訊主頁,進一步瞭解記憶體使用率。

如要瞭解詳情,請參閱 Cloud Run 定價,或使用定價計算工具估算費用。

必要的角色

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

如果您是從原始碼部署服務或函式,則必須在專案和 Cloud Build 服務帳戶中,取得額外角色。

如要查看與 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. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務。

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

  4. 從「Memory」(記憶體) 清單中選取記憶體大小。

  5. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

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。網址格式為 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:所需的記憶體大小。格式為固定或浮點數,後面加上單位:G 或 M 分別對應至 GB 或 MB,或使用 2 的冪次方等效值:Gi 或 Mi 分別對應至 GiB 或 MiB。
    • REVISION::新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
      • 開頭為「SERVICE-」
      • 只能使用小寫英文字母、數字和 -
      • 結尾不是 -
      • 不超過 63 個字元
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

    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 替換為服務所需的記憶體限制。

撰寫

如要在 compose.yaml 檔案中指定 CPU 和記憶體提示,請在服務定義中加入 cpus 屬性。Cloud Run 會在設定 CPU 值時自動分配所需記憶體。

  services:
    web:
      image: IMAGE
      cpus: CPU_VALUE

更改下列內容:

  • IMAGE:容器映像檔的網址。
  • CPU_VALUE:所需的 CPU 限制,例如 2。這個值會決定所需的記憶體。

部署服務

  1. 如要部署服務,請執行 gcloud run compose up 指令:

    gcloud run compose up compose.yaml
  2. 請按照提示y安裝必要元件或啟用 API。

  3. 選用:如要允許未經驗證的使用者存取服務,請公開服務。

部署完成後,系統會顯示 Cloud Run 服務網址。複製這個網址並貼到瀏覽器,即可查看執行中的容器。您可以在 Google Cloud 控制台停用預設驗證。

最佳化服務的記憶體

如果是 Cloud Run 服務,您可以使用下列公式,判斷服務的記憶體用量高峰:(常態記憶體) + (每個要求的記憶體) * (服務並行數量)

視情況,

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

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

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

查看記憶體限制設定

如要查看 Cloud Run 服務目前的記憶體限制設定,請按照下列步驟操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run 的「Services」(服務) 頁面:

    前往 Cloud Run。

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

  3. 按一下「容器」分頁標籤查看設定。

gcloud

  1. 使用下列指令:

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