您可以選擇要為 Cloud Run 服務提供多少記憶體。本頁說明如何指定服務可用的記憶體量。
瞭解記憶體用量
超出允許記憶體限制的 Cloud Run 執行個體會遭到終止。
執行個體的可用記憶體必須足以支援:
- 執行服務可執行檔,因為可執行檔必須載入記憶體
- 在服務程序中配置記憶體
- 將檔案寫入檔案系統
部署的容器映像檔大小不會影響執行個體可用的記憶體。
設定及更新記憶體限制
您可以為 Cloud Run 服務設定記憶體限制。 根據預設,分配給修訂版本每個執行個體的記憶體為 512 MiB,分配給函式的記憶體為 256 MiB。
設定 CPU 值時所需的記憶體
設定 CPU 值時,必須提供下列記憶體:
| CPU | 所需記憶體 |
|---|---|
| 0.08 個 vCPU | 最多 512 MiB |
| 0.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 |
記憶體上限
可設定的記憶體最大量為 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:
從 Cloud Run 導覽選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「Edit and deploy new revision」(編輯及部署新修訂版本)。
如要設定新服務,請填寫初始服務設定頁面,然後按一下「Container(s), Volumes, Networking, Security」,展開服務設定頁面。
按一下「Container」分頁標籤。
- 從「記憶體」下拉式清單中選取想要的記憶體大小。
按一下 [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
在傳回的設定中找出記憶體限制設定。