您可以為 Cloud Run 服務配置不同數量的記憶體。本頁面說明如何指定服務可用的記憶體量。
瞭解記憶體用量
超出允許記憶體限制的 Cloud Run 執行個體會遭到終止。
下列項目會計入執行個體的可用記憶體:
- 執行服務可執行檔,因為可執行檔必須載入至記憶體
- 在服務程序中配置記憶體
- 將檔案寫入檔案系統
部署的容器映像檔大小不會計入可用記憶體。
設定及更新記憶體限制
您可以為 Cloud Run 服務設定記憶體上限。根據預設,分配給修訂版本的每個執行個體的記憶體為 512 MiB,而分配給函式的記憶體為 256 MiB。
最低 CPU 需求
您選擇的記憶體分配量會對應服務的 CPU 最低數量。設定記憶體限制時,必須設定下列 CPU 最低限制:
記憶體 | 所需的 CPU 數量 |
---|---|
128 MiB | .083 vCPU |
256 MiB | .167 個 vCPU |
512 MiB | .333 個 vCPU |
1 GiB | .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 服務中的 Cloud Run 開發人員 (
roles/run.developer
) -
服務身分中的「服務帳戶使用者」 (
roles/iam.serviceAccountUser
)
如需與 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:
從選單中選取「Services」(服務),然後按一下「Deploy container」(部署容器),即可設定新的服務。如果您要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」。
如果您要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」展開服務設定頁面。
按一下「Container」分頁標籤。
- 從「Memory」下拉式清單中選取所需記憶體大小。
按一下 [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
在傳回的設定中找出記憶體限制設定。