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

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

    如果存在 service.yaml 檔案,gcloud run services replace 指令預設會使用該檔案。

設定自訂目標

設定限制中設定特定 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

    如果存在 service.yaml 檔案,gcloud run services replace 指令預設會使用該檔案。

禁用縮放控件

您可以停用 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

    如果存在 service.yaml 檔案,gcloud run services replace 指令預設會使用該檔案。

還原為預設值

將目標 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

    如果存在 service.yaml 檔案,gcloud run services replace 指令預設會使用該檔案。

視圖縮放配置

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

控制台

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

    前往 Cloud Run

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

  3. 按一下「縮放」分頁標籤,即可查看縮放設定。

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 的容許度較低,不會等待太久才進行資源調度。

後續步驟