根據預設,Cloud Run 會將 CPU 和並行的使用率目標設為 60%,以達到最佳效能,並自動調整執行個體數量,處理所有傳入要求。不過,在某些情況下,您可能需要設定要使用的縮放比例,例如僅限 CPU,並為使用率設定自訂目標。
Cloud Run 提供縮放控制項,讓您進一步掌握服務的縮放行為,並根據需求,針對工作負載的縮放做出明智決策。您可以保留預設使用率目標,啟用強化資源調度行為,或設定下列自訂使用率目標:
- 以 CPU 為準的調度目標使用率
- 以並行作業為準的自動調度目標使用率
透過資源調度控制項,您可以最佳化服務成本並提高預測準確度。如要進一步瞭解 Cloud Run 服務的預設自動調度資源行為,請參閱「關於 Cloud Run 服務中的執行個體自動調度資源」。
設定限制
自訂縮放目標有以下限制:
| 資源調度驅動程式 | 預設百分比 | 可設定的最低百分比 | 可設定的最大百分比 |
|---|---|---|---|
CPU target utilization |
60% | 10% | 95% |
Concurrency target utilization |
60% | 10% | 95% |
選擇啟用強化資源調度行為
即使服務的執行個體數量較少,Cloud Run 的自動調度程式也會密切配合您設定的目標。即使您打算保留 CPU 和並行作業的預設使用率目標 (60%),也建議啟用這項功能,以提高預測擴充規模的準確度。
如要啟用這項功能,請在部署新修訂版本時使用 gcloud CLI 或 YAML。
變更任何設定都會建立新的修訂版本。除非您明確做出更新,改變這項設定,否則後續的修訂版本也會自動取得這個設定。
gcloud
執行下列 gcloud beta run services update 指令,設定特定修訂版本的目標 CPU 使用率和目標並行使用率值:
gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \ --scaling-concurrency-target=0.6
將 SERVICE 改為您的服務名稱。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
新增
run.googleapis.com/scaling-cpu-target和run.googleapis.com/scaling-concurrency-target屬性。apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: '0.6' run.googleapis.com/scaling-concurrency-target: '0.6'
將 SERVICE 改為您的服務名稱。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
設定自訂目標
定義自訂使用率目標,在設定限制內設定特定 CPU 和並行使用率目標,以最佳化費用或提升工作負載效能。
變更任何設定都會建立新的修訂版本。除非您明確做出更新,改變這項設定,否則後續的修訂版本也會自動取得這個設定。
部署新修訂版本時,可以使用 gcloud CLI 或 YAML 設定縮放控制項。
gcloud
執行 gcloud beta run services update 指令,更新特定修訂版本的目標 CPU 使用率和目標並行使用率值。
如要更新目標 CPU 使用率,請執行下列指令:
gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET
更改下列內容:
SERVICE:服務名稱。
CPU_TARGET:CPU 使用率目標。請指定介於 0.1 到 0.95 之間的值,小數點後最多只能設定兩位數。
如要更新目標並行使用率,請執行下列指令:
gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET
更改下列內容:
SERVICE:服務名稱。
CONCURRENCY_TARGET:並行作業使用率目標。請指定介於 0.1 到 0.95 之間的值,小數點後最多只能設定兩位數。
如要更新目標 CPU 和並行使用率,請執行下列指令:
gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \ --scaling-concurrency-target=CONCURRENCY_TARGET
更改下列內容:
- SERVICE:服務名稱。
- CPU_TARGET:CPU 使用率目標。請指定介於 0.1 到 0.95 之間的值,小數點後最多只能設定兩位數。
- 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: annotations: run.googleapis.com/launch-stage: BETA 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.95 之間的值,小數點後最多只能設定兩位數。
- CONCURRENCY_TARGET:並行作業使用率目標。請指定介於 0.1 到 0.95 之間的值,小數點後最多只能設定兩位數。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
停用縮放控制項
您可以停用 CPU 使用率或並行使用率目標,但不能同時停用兩者。您必須啟用至少一個縮放驅動程式。如要停用縮放控制項,請還原預設使用率值,而非停用這些控制項。停用資源調度驅動程式後,Cloud Run 在做出資源調度決策時會忽略該指標。
部署新修訂版本時,可以使用 gcloud CLI 或 YAML 停用縮放控制項。
gcloud
您可以執行 gcloud beta run services update 指令,停用目標 CPU 使用率或目標並行使用率。
如要只依 CPU 調整資源配置,請執行下列指令來停用並行目標:
gcloud beta run services update SERVICE --scaling-concurrency-target=disabled
將 SERVICE 改為您的服務名稱。
如要只依並行調整資源配置,請執行下列指令來停用 CPU 目標:
gcloud beta 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: annotations: run.googleapis.com/launch-stage: BETA 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: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: disabled
將 SERVICE 改為您的服務名稱。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
還原為預設值
將目標 CPU 或目標並行利用率值還原為預設值時,您會選擇停用縮放控制功能。部署新修訂版本時,可以使用 gcloud CLI 或 YAML 將縮放控制項還原為預設值。
gcloud
執行 gcloud beta run services update 指令,將目標 CPU 使用率和目標並行使用率還原為預設值。
如要將目標 CPU 使用率還原為預設值,請執行下列指令:
gcloud beta run services update SERVICE --scaling-cpu-target=default
將 SERVICE 改為您的服務名稱。
如要將目標並行使用率還原為預設值,請執行下列指令:
gcloud beta run services update SERVICE --scaling-concurrency-target=default
將 SERVICE 改為您的服務名稱。
如要將目標 CPU 使用率和目標並行數還原為預設值,請執行下列指令:
gcloud beta 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: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: # Remove the scaling target annotations to restore defaults ...
將 SERVICE 改為您的服務名稱。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
查看資源調度設定
您可以使用 gcloud CLI 或 YAML 查看自動調度設定。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下服務,開啟「服務詳細資料」面板。
按一下「Revisions」(修訂版本) 分頁標籤。
在右側的詳細資料面板中,查看「Containers」分頁下方列出的「Autoscaling metrics」設定。
gcloud
使用下列指令:
gcloud run services describe SERVICE
將 SERVICE 改為您的服務名稱。
在傳回的設定中,找出「目標 CPU 使用率:」和「目標並行使用率:」設定的值。
最佳做法
您可以減少執行個體數量來節省費用並防止過度擴充,也可以根據特定驅動程式更積極地擴充,進而提升效能。如要判斷工作負載的最佳使用率目標,請採用下列策略:
調整目標前,請先找出觸發服務資源配置調整的指標。請按照下列步驟找出縮放指標:
搜尋並選取
run.googleapis.com/scaling/recommended_instances指標,然後將「匯總」設為「未匯總」,即可查看按擴展驅動因素分組的指標。
價值最高的驅動程式會控管服務的執行個體數量。如要優先使用其他驅動程式,或更積極/保守地調整規模,請調整該特定驅動程式的利用率目標。
請逐步調整目標,並在每次調整後稍待幾分鐘,觀察對成效的影響。
使用流量分配功能測試新的擴充目標,先將一小部分流量導向其他修訂版本,再將目標套用至整個服務。
使用率目標較低
將使用率目標調降至最低的 0.1 (10%),會大幅改變服務的調整方式。
設定低使用率目標的好處包括:
高服務可用性:服務會提早擴充,維持大量閒置容量緩衝區,以處理突發流量高峰,不會發生延遲。
在執行個體數量較少時,擴充速度更快:服務擴充時更可靠,不會遇到高用量瓶頸。
設定低使用率目標的缺點包括:
- 可能導致費用增加:您執行的執行個體數量超出目前負載的嚴格需求,因此帳單費用較高。
- 更頻繁的調整規模決策:在利用率較低時,Cloud Run 的容許度較低,不會等待太久才調整規模。
後續步驟
- 如要瞭解其他調度選項,請參閱手動調度。
- 如要管理 Cloud Run 服務的執行個體數量上限,請參閱「設定執行個體數量上限」。
- 如要管理每個執行個體處理的並行要求數量上限,請參閱設定並行。
- 如要最佳化並行設定,請參閱調整並行的開發提示。
- 如要指定要持續執行的閒置執行個體,盡量減少延遲時間或首次要求時的冷啟動情形,請參閱「使用
min-instance啟用閒置執行個體」。