根據預設,Cloud Run 會將 CPU 和並行的使用率目標設為 60%,以盡量提升效能,並自動調整執行個體數量,處理所有傳入要求。不過,在某些情況下,您可能希望能夠設定要使用的調度因子 (例如僅限 CPU),並設定自訂使用率目標。
Cloud Run 提供資源調度控制項,讓您進一步掌握服務的資源調度行為,並根據需求做出明智的決策,調整工作負載的資源調度。您可以設定下列自訂使用率目標:
- 以 CPU 為準的調度目標使用率
- 以並行作業為準的自動調度目標使用率
透過資源調度控制項,您可以提高服務的預測準確度,並盡可能提高成本效益。如要進一步瞭解 Cloud Run 服務的預設自動調度資源行為,請參閱「關於 Cloud Run 服務中的執行個體自動調度資源」。
設定限制
自訂調度目標有以下限制:
| 縮放驅動程式 | 預設百分比 | 可設定的最低百分比 | 可設定的最高百分比 |
|---|---|---|---|
CPU target utilization |
60% | 10% | 90% |
Concurrency target utilization |
60% | 10% | 95% |
設定自訂目標
在設定限制中設定特定 CPU 和並行使用率目標,定義自訂使用率目標,盡可能提高工作負載的成本效益或效能。
任何設定變更都會導致系統建立新的修訂版本。除非您明確更新以變更設定,否則後續修訂版本也會自動採用這項設定。
即使您設定自訂並行目標或停用以 CPU 為準的資源調度功能,ACT 仍會保持啟用狀態。詳情請參閱「關於執行個體自動調度資源」。
部署新修訂版本時,可以使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform 設定縮放控制項。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
如要設定新服務,請按一下「Deploy container」(部署容器),顯示「Create service」(建立服務) 頁面。
如要設定現有服務,請按一下該服務開啟「Service details」(服務詳細資料) 頁面,然後按一下「Scaling」(調整規模) 分頁標籤。
找出「服務資源調度」部分。確認已選取「自動調整資源配置」。展開「自訂自動調度資源因素」部分,設定下列使用率目標:
如要設定目標 CPU 使用率,請按一下「CPU utilization」,然後輸入
10到90的值。如要設定目標並行作業使用率,請按一下「並行要求使用率」,然後輸入
10到95的值。按一下各項使用率設定下方的「完成」。
按一下「建立」建立新服務。按一下「查看差異並重新部署」,然後點選現有服務的「部署變更」。
gcloud
執行 gcloud run services update 指令,更新特定修訂版本的目標 CPU 使用率和目標並行使用率值。
如要更新目標 CPU 使用率,請執行下列指令:
gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET
更改下列內容:
SERVICE:服務名稱。
CPU_TARGET:CPU 使用率目標。指定
0.1到0.90的值。小數點後最多只能設定兩位數。
如要更新目標並行使用率,請執行下列指令:
gcloud run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET
更改下列內容:
SERVICE:服務名稱。
CONCURRENCY_TARGET:並行作業使用率目標。指定介於 `0.1` 到 `0.95` 的值。小數點後最多只能設定兩位數。
如要更新目標 CPU 和並行使用率,請執行下列指令:
gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET \ --scaling-concurrency-target=CONCURRENCY_TARGET
更改下列內容:
- SERVICE:服務名稱。
- CPU_TARGET:CPU 使用率目標。指定
0.1到0.90的值。小數點後最多只能設定兩位數。 - CONCURRENCY_TARGET:並行作業使用率目標。指定介於 `0.1` 到 `0.95` 的值。小數點後最多只能設定兩位數。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
如要更新目標 CPU 和並行作業使用率,請新增
run.googleapis.com/scaling-cpu-target和run.googleapis.com/scaling-concurrency-target屬性:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: 'CPU_TARGET' run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'
更改下列內容:
- SERVICE:服務名稱。
- CPU_TARGET:CPU 使用率目標。指定
0.1到0.90的值。小數點後最多只能設定兩位數。 - CONCURRENCY_TARGET:並行作業使用率目標。指定介於 `0.1` 到 `0.95` 的值。小數點後最多只能設定兩位數。
使用下列指令建立或更新服務:
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 = "SERVICE"
location = "REGION"
template {
scaling {
cpu_utilization = CPU_TARGET
concurrency_utilization = CONCURRENCY_TARGET
}
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
- SERVICE:服務名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - CPU_TARGET:CPU 使用率目標。指定
0.1到0.90的值。小數點後最多只能設定兩位數。 - CONCURRENCY_TARGET:並行作業使用率目標。指定介於 `0.1` 到 `0.95` 的值。小數點後最多只能設定兩位數。
IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
停用縮放控制項
您可以停用 CPU 使用率或並行使用率目標,但不能同時停用兩者。其中一個縮放驅動程式必須一律處於啟用狀態。如要停用縮放控制項,請還原預設使用率值,而非停用這些控制項。停用資源調度驅動程式後,Cloud Run 在做出資源調度決策時會忽略該指標。
部署新修訂版本時,可以使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform 停用縮放控制項。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
點選服務開啟「服務詳細資料」頁面,然後點選「調整規模」分頁標籤。
找出「服務資源調度」部分。確認已選取「自動調整資源配置」。展開「自訂自動調度資源因素」部分:
如要只依 CPU 進行調整,請按一下「並行要求使用率」旁的刪除圖示,然後輸入目標 CPU 使用率的值 (如果沒有的話)。
如要只依並行數調整規模,請按一下「CPU 使用率」旁的刪除圖示,然後輸入目標並行使用率的值 (如果沒有的話)。
按一下各項使用率設定下方的「完成」。
按一下「建立」建立新服務。按一下「查看差異並重新部署」,然後點選現有服務的「部署變更」。
gcloud
您可以執行 gcloud run services update 指令,停用目標 CPU 使用率或目標並行使用率。
如要只依 CPU 調整規模,請執行下列指令來停用並行目標:
gcloud run services update SERVICE --scaling-concurrency-target=disabled
將 SERVICE 改為您的服務名稱。
如要僅依並行數調度資源,請執行下列指令來停用 CPU 目標:
gcloud run services update SERVICE --scaling-cpu-target=disabled
將 SERVICE 改為您的服務名稱。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
如要只依據 CPU 進行調度,請將
run.googleapis.com/scaling-concurrency-target屬性設為disabled,停用並行目標:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-concurrency-target: disabled
將 SERVICE 改為您的服務名稱。
如要僅依並行數調整大小,請將
run.googleapis.com/scaling-cpu-target屬性設為disabled,停用 CPU 目標:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: disabled
將 SERVICE 改為您的服務名稱。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
gcloud run services replace指令預設會使用service.yaml檔案 (如有)。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定的google_cloud_run_v2_service 資源中新增下列項目:如要只依據 CPU 進行調度,請將
concurrency_utilization設為0,停用並行目標:resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" template { scaling { cpu_utilization = CPU_TARGET concurrency_utilization = 0 } containers { image = "IMAGE_URL" } } }更改下列內容:
- SERVICE:服務名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - CPU_TARGET:CPU 使用率目標。指定
0.1到0.90的值。小數點後最多只能設定兩位數。 IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
如要僅依並行數調度資源,請將
cpu_utilization設為0,停用 CPU 目標:resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" template { scaling { cpu_utilization = 0 concurrency_utilization = CONCURRENCY_TARGET } containers { image = "IMAGE_URL" } } }更改下列內容:
- SERVICE:服務名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - CONCURRENCY_TARGET:並行作業使用率目標。指定介於 `0.1` 到 `0.95` 的值。小數點後最多只能設定兩位數。
IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
還原為預設值
將目標 CPU 或目標並行使用率值還原為預設值後,Cloud Run 會使用預設使用率目標 (60%),而非自訂目標。部署新修訂版本時,可以使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform,將縮放控制項還原為預設值。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
點選服務開啟「服務詳細資料」頁面,然後點選「調整規模」分頁標籤。
找出「服務資源調度」部分。確認已選取「自動調整資源配置」。展開「自訂自動調度資源因素」部分,設定下列使用率目標:
如果「CPU 使用率」和「並行要求使用率」目標已移除,請按一下「新增信號」,將兩者重新加入。
將「CPU 使用率」和「並行要求使用率」的值設為
60。按一下各項使用率設定下方的「完成」。
按一下「建立」建立新服務。按一下「查看差異並重新部署」,然後點選現有服務的「部署變更」。
gcloud
執行 gcloud run services update 指令,將目標 CPU 使用率和目標並行作業使用率還原為預設值。
如要將目標 CPU 使用率還原為預設值,請執行下列指令:
gcloud run services update SERVICE --scaling-cpu-target=default
將 SERVICE 改為您的服務名稱。
如要將目標並行使用率還原為預設值,請執行下列指令:
gcloud run services update SERVICE --scaling-concurrency-target=default
將 SERVICE 改為您的服務名稱。
如要將目標 CPU 使用率和目標並行數還原為預設值,請執行下列指令:
gcloud run services update SERVICE --scaling-cpu-target=default \ --scaling-concurrency-target=default
將 SERVICE 改為您的服務名稱。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
如要將 CPU 和並行使用率還原為預設目標,請從 YAML 檔案中移除
run.googleapis.com/scaling-cpu-target和run.googleapis.com/scaling-concurrency-target屬性:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: # Remove the scaling target annotations to restore defaults ...
將 SERVICE 改為您的服務名稱。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
gcloud run services replace指令預設會使用service.yaml檔案 (如有)。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定的google_cloud_run_v2_service 資源中新增下列項目:如要將 CPU 和並行使用率還原為預設目標,請從 Terraform 設定的 scaling 區塊中移除 cpu_utilization 和 concurrency_utilization 屬性:
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
scaling {
# Remove the scaling target attributes to restore defaults
}
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
- SERVICE:服務名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
查看資源調度設定
您可以使用 Google Cloud 控制台或 gcloud CLI 查看縮放設定。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下服務,開啟「服務詳細資料」面板。
按一下「縮放」分頁標籤,即可查看縮放設定。
gcloud
使用下列指令:
gcloud run services describe SERVICE
將 SERVICE 改為您的服務名稱。
在傳回的設定中,找出「目標 CPU 使用率:」和「目標並行作業使用率:」設定的值。
最佳做法
您可以減少執行個體數量來節省成本,並避免過度擴充,也可以根據特定驅動程式更積極地擴充,以提升效能。如要判斷工作負載的最佳使用率目標,請採用下列策略:
調整目標前,請先找出觸發服務擴充的指標。請按照下列步驟找出縮放比例指標:
前往 Google Cloud 控制台的「Metrics Explorer」,查看縮放驅動程式的監控圖表。
搜尋並選取
run.googleapis.com/scaling/recommended_instances指標,然後將「匯總」設為「未匯總」,即可查看依擴展驅動因素分組的指標。
價值最高的驅動程式會控管服務的執行個體數量。如要優先使用其他驅動程式,或更積極/保守地調整規模,請調整該驅動程式的用量目標。
如果自動並行調整 (ACT) 是擴縮驅動程式,表示個別執行個體的 1 秒 CPU 使用率超過 90%,且 Cloud Run 會動態限制要求並行,以保護服務。如要減輕 ACT 對擴充作業的影響,請考慮增加 CPU 配置或調整並行設定。詳情請參閱「關於執行個體自動調度資源」。
請逐步調整目標,並在每次調整後稍候幾分鐘,觀察對成效的影響。
使用流量分配功能測試新的縮放目標,先將一小部分的流量導向其他修訂版本,再全面推出至整個服務。
關於低使用率目標
將使用率目標調降至最低值 0.1 (10%),會大幅改變服務的擴充方式。
設定低使用率目標的好處包括:
高服務可用性:服務會提早擴充,維持大量閒置容量緩衝區,處理突然暴增的流量,不會發生延遲。
在低例項數時加快擴充速度:服務在達到高用量瓶頸前,可更可靠地擴充。
設定低使用率目標的缺點包括:
- 可能導致費用增加:您執行的執行個體數量超出目前負載的嚴格必要數量,因此帳單費用較高。
- 更頻繁的資源調度決策:在較低的用量下,Cloud Run 的容許度較低,不會等待太久才進行資源調度。
後續步驟
- 如要進一步瞭解自動調度機制概念和行為,請參閱「關於 Cloud Run 服務中的執行個體自動調度機制」。
- 如要瞭解其他縮放選項,請參閱手動縮放。
- 如要管理 Cloud Run 服務的執行個體數量上限,請參閱「設定執行個體數量上限」。
- 如要管理每個執行個體處理的並行要求數量上限,請參閱「設定並行」。
- 如要最佳化並行設定,請參閱調整並行的開發提示。
- 如要指定要持續執行的閒置執行個體,盡可能縮短延遲時間或減少首次要求時的冷啟動情形,請參閱「使用
min-instance啟用閒置執行個體」。