設定服務的自訂資源調度控制項

根據預設,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

  1. 如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定

    gcloud run services describe SERVICE --format export > service.yaml
  2. 新增 run.googleapis.com/scaling-cpu-targetrun.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 改為您的服務名稱。

  3. 使用下列指令建立或更新服務:

    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

  1. 如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定

    gcloud run services describe SERVICE --format export > service.yaml
  2. 如要更新目標 CPU 和並行作業使用率,請新增 run.googleapis.com/scaling-cpu-targetrun.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 之間的值,小數點後最多只能設定兩位數。
  3. 使用下列指令建立或更新服務:

    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

  1. 如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定

    gcloud run services describe SERVICE --format export > service.yaml
  2. 如要僅依據 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 改為您的服務名稱。

  3. 如要僅依並行數調整規模,請將 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 改為您的服務名稱。

  4. 使用下列指令建立或更新服務:

    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

  1. 如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定

    gcloud run services describe SERVICE --format export > service.yaml
  2. 如要將 CPU 和並行利用率還原為預設目標,請從 YAML 檔案中移除 run.googleapis.com/scaling-cpu-targetrun.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 改為您的服務名稱。

  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

查看資源調度設定

您可以使用 gcloud CLI 或 YAML 查看自動調度設定。

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:

    前往 Cloud Run

  2. 按一下服務,開啟「服務詳細資料」面板。

  3. 按一下「Revisions」(修訂版本) 分頁標籤。

  4. 在右側的詳細資料面板中,查看「Containers」分頁下方列出的「Autoscaling metrics」設定。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE

    SERVICE 改為您的服務名稱。

  2. 在傳回的設定中,找出「目標 CPU 使用率:」和「目標並行使用率:」設定的值。

最佳做法

您可以減少執行個體數量來節省費用並防止過度擴充,也可以根據特定驅動程式更積極地擴充,進而提升效能。如要判斷工作負載的最佳使用率目標,請採用下列策略:

  • 調整目標前,請先找出觸發服務資源配置調整的指標。請按照下列步驟找出縮放指標:

    1. 前往 Google Cloud 控制台的「Metrics Explorer」,查看 CPU 和並行使用率的監控圖表。

    2. 搜尋並選取 run.googleapis.com/scaling/recommended_instances 指標,然後將「匯總」設為「未匯總」,即可查看按擴展驅動因素分組的指標。

    價值最高的驅動程式會控管服務的執行個體數量。如要優先使用其他驅動程式,或更積極/保守地調整規模,請調整該特定驅動程式的利用率目標。

  • 請逐步調整目標,並在每次調整後稍待幾分鐘,觀察對成效的影響。

  • 使用流量分配功能測試新的擴充目標,先將一小部分流量導向其他修訂版本,再將目標套用至整個服務。

使用率目標較低

將使用率目標調降至最低的 0.1 (10%),會大幅改變服務的調整方式。

設定低使用率目標的好處包括:

  • 高服務可用性:服務會提早擴充,維持大量閒置容量緩衝區,以處理突發流量高峰,不會發生延遲。

  • 在執行個體數量較少時,擴充速度更快:服務擴充時更可靠,不會遇到高用量瓶頸。

設定低使用率目標的缺點包括:

  • 可能導致費用增加:您執行的執行個體數量超出目前負載的嚴格需求,因此帳單費用較高。
  • 更頻繁的調整規模決策:在利用率較低時,Cloud Run 的容許度較低,不會等待太久才調整規模。

後續步驟