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

根據預設,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 設定縮放控制項。

控制台

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

    前往 Cloud Run。

  2. 如要設定新服務,請按一下「Deploy container」(部署容器),顯示「Create service」(建立服務) 頁面。

  3. 如要設定現有服務,請按一下該服務開啟「Service details」(服務詳細資料) 頁面,然後按一下「Scaling」(調整規模) 分頁標籤。

  4. 找出「服務資源調度」部分。確認已選取「自動調整資源配置」。展開「自訂自動調度資源因素」部分,設定下列使用率目標:

    • 如要設定目標 CPU 使用率,請按一下「CPU utilization」,然後輸入 10 到 90 的值。

    • 如要設定目標並行作業使用率,請按一下「並行要求使用率」,然後輸入 10 到 95 的值。

    • 按一下各項使用率設定下方的「完成」。

  5. 按一下「建立」建立新服務。按一下「查看差異並重新部署」,然後點選現有服務的「部署變更」。

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

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. 如要更新目標 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` 的值。小數點後最多只能設定兩位數。
  3. 使用下列指令建立或更新服務:

    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 停用縮放控制項。

控制台

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

    前往 Cloud Run。

  2. 點選服務開啟「服務詳細資料」頁面,然後點選「調整規模」分頁標籤。

  3. 找出「服務資源調度」部分。確認已選取「自動調整資源配置」。展開「自訂自動調度資源因素」部分:

    • 如要只依 CPU 進行調整,請按一下「並行要求使用率」旁的刪除圖示,然後輸入目標 CPU 使用率的值 (如果沒有的話)。

    • 如要只依並行數調整規模,請按一下「CPU 使用率」旁的刪除圖示,然後輸入目標並行使用率的值 (如果沒有的話)。

    • 按一下各項使用率設定下方的「完成」。

  4. 按一下「建立」建立新服務。按一下「查看差異並重新部署」,然後點選現有服務的「部署變更」。

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

  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:
      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:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    將 SERVICE 改為您的服務名稱。

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

    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,將縮放控制項還原為預設值。

控制台

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

    前往 Cloud Run。

  2. 點選服務開啟「服務詳細資料」頁面,然後點選「調整規模」分頁標籤。

  3. 找出「服務資源調度」部分。確認已選取「自動調整資源配置」。展開「自訂自動調度資源因素」部分,設定下列使用率目標:

    • 如果「CPU 使用率」和「並行要求使用率」目標已移除,請按一下「新增信號」,將兩者重新加入。

    • 將「CPU 使用率」和「並行要求使用率」的值設為 60。

    • 按一下各項使用率設定下方的「完成」。

  4. 按一下「建立」建立新服務。按一下「查看差異並重新部署」,然後點選現有服務的「部署變更」。

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

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

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

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

    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 查看縮放設定。

控制台

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

    前往 Cloud Run。

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

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

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE

    將 SERVICE 改為您的服務名稱。

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

最佳做法

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

關於低使用率目標

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

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

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

  • 在低例項數時加快擴充速度:服務在達到高用量瓶頸前,可更可靠地擴充。

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

  • 可能導致費用增加:您執行的執行個體數量超出目前負載的嚴格必要數量,因此帳單費用較高。
  • 更頻繁的資源調度決策:在較低的用量下,Cloud Run 的容許度較低,不會等待太久才進行資源調度。

後續步驟