您可以選擇要為 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 |
記憶體大小上限
可設定的記憶體最大量為 32 GiB (32 Gi
)。
最低記憶體
最低記憶體設定會因您使用的第一代或第二代執行環境而異:
- 第一代為 128 MiB
- 第二代為 512 MiB
必要的角色
如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:
-
Cloud Run 開發人員 (
roles/run.developer
) 在 Cloud Run 服務上 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 服務身分
如果您要從原始碼部署服務或函式,您也必須在專案和 Cloud Build 服務帳戶中獲得額外角色。
如需與 Cloud Run 相關的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色和 Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。
設定記憶體限制
變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。
如果是 Cloud Run 服務,您可以在 Google Cloud 控制台、gcloud 指令列或 YAML 檔案中,建立新服務或部署新版本時設定記憶體限制:
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「服務」,然後按一下「部署容器」來設定新服務。如要設定現有服務,請按一下該服務,然後點選「Edit and deploy new revision」(編輯及部署新修訂版本)。
如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。
按一下「容器」分頁標籤。
- 從「記憶體」下拉式清單中選取想要的記憶體大小。
按一下 [Create] (建立) 或 [Deploy] (部署)。
gcloud
您可以使用以下指令更新特定服務的記憶體分配:
gcloud run services update SERVICE --memory SIZE
將 SERVICE 改為您的服務名稱,並將 SIZE 改為需要的記憶體大小。大小的格式為定點數或浮點數,後面加上單位 G
或 M
,分別對應於 GB 或 MB;或者是使用 2 的 n 次冪當量 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
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
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 的 n 次冪當量Gi
或Mi
,分別對應於 GiB 或 MiB。 - REVISION,然後輸入新的修訂版本名稱,或刪除現有名稱。如果您提供新的修訂版本名稱,則必須符合下列條件:
- 開頭為「
SERVICE-
」 - 只能包含小寫字母、數字和
-
- 結尾不是
-
- 不超過 63 個半形字元
- 開頭為「
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service
資源:在 template.containers.resources.limits
下方,將 512Mi
替換為服務所需的記憶體上限。
為服務最佳化記憶體
如果是 Cloud Run 服務,可以使用下列方式找出服務的記憶體最大需求:(固定佔用記憶體) + (每個要求的記憶體) * (服務並行)
視情況,
若您提供並行服務,您也需要增加記憶體限制以應付最大使用量。
若減少並行服務,即可考慮降低記憶體限制,以節省記憶體用量費用。
如需最小化每個要求的記憶體用量指南,請參閱全域變數的開發提示。
查看記憶體限制設定
如要查看 Cloud Run 服務目前的記憶體上限設定:
控制台
前往 Google Cloud 控制台的 Cloud Run:
按一下感興趣的服務,開啟「服務詳細資料」頁面。
按一下「Revisions」(修訂版本) 分頁標籤。
在右側的詳細資料面板中,記憶體限制設定會列在「容器」分頁下方。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中找出記憶體限制設定。