Mengonfigurasi kontrol penskalaan kustom untuk layanan

Secara default, Cloud Run mengoptimalkan performa tinggi dengan target pemanfaatan 60% untuk CPU dan konkurensi, serta menskalakan jumlah instance secara otomatis untuk menangani semua permintaan yang masuk. Namun, untuk beberapa kasus penggunaan, Anda mungkin menginginkan kemampuan untuk mengonfigurasi faktor penskalaan yang akan digunakan, seperti hanya CPU, dan menetapkan target kustom untuk pemakaian.

Cloud Run menyediakan kontrol penskalaan untuk memberi Anda kepemilikan yang lebih besar atas perilaku penskalaan layanan Anda, sehingga Anda dapat membuat keputusan yang tepat tentang penskalaan workload sesuai dengan persyaratan Anda. Anda dapat mengonfigurasi target pemanfaatan kustom berikut:

  • Target pemakaian untuk penskalaan berbasis CPU
  • Target pemanfaatan untuk penskalaan berbasis serentak

Dengan kontrol penskalaan, Anda dapat mengoptimalkan biaya dan meningkatkan prediktabilitas untuk layanan Anda. Untuk mengetahui informasi selengkapnya tentang perilaku penskalaan otomatis default layanan Cloud Run, lihat Tentang penskalaan otomatis instance di layanan Cloud Run.

Batas konfigurasi

Batasan berikut berlaku untuk target penskalaan kustom:

Pendorong penskalaan Default % % yang dapat dikonfigurasi minimum % yang dapat dikonfigurasi maksimum
CPU target utilization 60% 10% 90%
Concurrency target utilization 60% 10% 95%

Mengonfigurasi target kustom

Tentukan target pemanfaatan kustom untuk mengoptimalkan biaya atau meningkatkan performa untuk beban kerja Anda dengan mengonfigurasi target pemanfaatan CPU dan konkurensi tertentu dalam batas konfigurasi.

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

Meskipun Anda mengonfigurasi target konkurensi kustom atau menonaktifkan penskalaan berbasis CPU, Penyesuaian Konkurensi Adaptif (ACT) tetap aktif. Untuk mengetahui detailnya, lihat Tentang penskalaan otomatis instance.

Anda dapat mengonfigurasi kontrol penskalaan menggunakan konsol Google Cloud , gcloud CLI, YAML, atau Terraform saat Anda men-deploy revisi baru.

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Jika Anda mengonfigurasi layanan baru, klik Deploy container untuk menampilkan halaman Create service.

  3. Jika Anda mengonfigurasi layanan yang ada, klik layanan untuk membuka halaman Service details, lalu klik tab Scaling.

  4. Temukan bagian Penskalaan layanan. Pastikan Penskalaan otomatis dipilih. Luaskan bagian Sesuaikan faktor penskalaan otomatis untuk mengonfigurasi target pemanfaatan berikut:

    • Untuk mengonfigurasi target penggunaan CPU, klik Penggunaan CPU, lalu masukkan nilai dari 10 hingga 90.

    • Untuk mengonfigurasi penggunaan konkurensi target, klik Penggunaan permintaan serentak dan masukkan nilai dari 10 hingga 95.

    • Klik Selesai di bagian setiap konfigurasi pemanfaatan.

  5. Klik Buat untuk layanan baru. Klik View diff & redeploy, lalu Deploy changes untuk layanan yang ada.

gcloud

Perbarui nilai target pemakaian CPU dan target pemakaian konkurensi dari revisi tertentu dengan menjalankan perintah gcloud run services update.

  • Untuk memperbarui pemanfaatan CPU target, jalankan perintah berikut:

    gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.

    • CPU_TARGET: target penggunaan CPU. Tentukan nilai dari 0.1 hingga 0.90. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.

  • Untuk memperbarui pemanfaatan konkurensi target, jalankan perintah berikut:

    gcloud run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.

    • CONCURRENCY_TARGET: target penggunaan konkurensi. Tentukan nilai dari `0.1` hingga `0.95`. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.

  • Untuk mengupdate target CPU dan pemanfaatan konkurensi, jalankan perintah berikut:

    gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.
    • CPU_TARGET: target penggunaan CPU. Tentukan nilai dari 0.1 hingga 0.90. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
    • CONCURRENCY_TARGET: target penggunaan konkurensi. Tentukan nilai dari `0.1` hingga `0.95`. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Untuk memperbarui target penggunaan CPU dan konkurensi, tambahkan atribut run.googleapis.com/scaling-cpu-target dan 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'

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.
    • CPU_TARGET: target penggunaan CPU. Tentukan nilai dari 0.1 hingga 0.90. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
    • CONCURRENCY_TARGET: target penggunaan konkurensi. Tentukan nilai dari `0.1` hingga `0.95`. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
  3. Buat atau update layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

    Perintah gcloud run services replace secara default menggunakan file service.yaml jika ada.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
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"
    }
  }
}

Ganti kode berikut:

  • SERVICE: nama layanan Anda.
  • REGION: Google Cloud region, misalnya, europe-west1.
  • CPU_TARGET: target penggunaan CPU. Tentukan nilai dari 0.1 hingga 0.90. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
  • CONCURRENCY_TARGET: target penggunaan konkurensi. Tentukan nilai dari `0.1` hingga `0.95`. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
  • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Menonaktifkan kontrol penskalaan

Anda dapat menonaktifkan target penggunaan CPU atau target penggunaan serentak, tetapi tidak keduanya. Satu pendorong penskalaan harus selalu aktif. Untuk menonaktifkan kontrol penskalaan, pulihkan nilai pemanfaatan default, bukan menonaktifkannya. Saat Anda menonaktifkan pendorong penskalaan, Cloud Run akan mengabaikan metrik tersebut saat membuat keputusan penskalaan.

Anda dapat menonaktifkan kontrol penskalaan menggunakan konsol Google Cloud , gcloud CLI, YAML, atau Terraform saat Anda men-deploy revisi baru.

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Klik layanan untuk membuka halaman Service details, lalu klik tab Scaling.

  3. Temukan bagian Penskalaan layanan. Pastikan Penskalaan otomatis dipilih. Luaskan bagian Sesuaikan faktor penskalaan otomatis:

    • Untuk melakukan penskalaan hanya berdasarkan CPU, klik ikon hapus di samping Penggunaan permintaan serentak, dan masukkan nilai untuk target penggunaan CPU jika tidak ada.

    • Untuk menskalakan hanya berdasarkan konkurensi, klik ikon hapus di samping Penggunaan CPU, dan masukkan nilai untuk target penggunaan konkurensi jika tidak ada.

    • Klik Selesai di bagian setiap konfigurasi pemanfaatan.

  4. Klik Buat untuk layanan baru. Klik View diff & redeploy, lalu Deploy changes untuk layanan yang ada.

gcloud

Anda dapat menonaktifkan target pemakaian CPU atau target pemakaian serentak dengan menjalankan perintah gcloud run services update.

  • Untuk melakukan penskalaan hanya berdasarkan CPU, nonaktifkan target konkurensi dengan menjalankan perintah berikut:

    gcloud run services update SERVICE --scaling-concurrency-target=disabled

    Ganti SERVICE dengan nama layanan Anda.

  • Untuk melakukan penskalaan hanya berdasarkan konkurensi, nonaktifkan target CPU dengan menjalankan perintah berikut:

    gcloud run services update SERVICE --scaling-cpu-target=disabled

    Ganti SERVICE dengan nama layanan Anda.

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Untuk melakukan penskalaan hanya berdasarkan CPU, nonaktifkan target konkurensi dengan menyetel atribut run.googleapis.com/scaling-concurrency-target ke disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    Ganti SERVICE dengan nama layanan Anda.

  3. Untuk melakukan penskalaan hanya berdasarkan konkurensi, nonaktifkan target CPU dengan menyetel atribut run.googleapis.com/scaling-cpu-target ke disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    Ganti SERVICE dengan nama layanan Anda.

  4. Buat atau update layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

    Perintah gcloud run services replace secara default menggunakan file service.yaml jika ada.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
  • Untuk melakukan penskalaan hanya berdasarkan CPU, nonaktifkan target konkurensi dengan menyetel concurrency_utilization ke 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"
        }
      }
    }
    

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.
    • REGION: Google Cloud region, misalnya, europe-west1.
    • CPU_TARGET: target penggunaan CPU. Tentukan nilai dari 0.1 hingga 0.90. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • Untuk melakukan penskalaan hanya berdasarkan konkurensi, nonaktifkan target CPU dengan menyetel cpu_utilization ke 0:

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = 0
          concurrency_utilization = CONCURRENCY_TARGET
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.
    • REGION: Google Cloud region, misalnya, europe-west1.
    • CONCURRENCY_TARGET: target penggunaan konkurensi. Tentukan nilai dari `0.1` hingga `0.95`. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Pulihkan ke nilai default

Saat Anda memulihkan nilai target penggunaan CPU atau target penggunaan konkurensi ke default, Cloud Run akan menggunakan target penggunaan default sebesar 60%, bukan target kustom Anda. Anda dapat memulihkan kontrol penskalaan ke default menggunakan konsol Google Cloud , gcloud CLI, YAML, atau Terraform saat Anda men-deploy revisi baru.

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Klik layanan untuk membuka halaman Service details, lalu klik tab Scaling.

  3. Temukan bagian Penskalaan layanan. Pastikan Penskalaan otomatis dipilih. Luaskan bagian Sesuaikan faktor penskalaan otomatis untuk mengonfigurasi target pemanfaatan berikut:

    • Jika target Penggunaan CPU dan Penggunaan permintaan serentak dihapus, klik Tambahkan sinyal untuk menambahkannya kembali.

    • Tetapkan nilai untuk Penggunaan CPU dan Penggunaan permintaan serentak ke 60.

    • Klik Selesai di bagian setiap konfigurasi pemanfaatan.

  4. Klik Buat untuk layanan baru. Klik View diff & redeploy, lalu Deploy changes untuk layanan yang ada.

gcloud

Pulihkan target penggunaan CPU dan target penggunaan serentak ke nilai defaultnya dengan menjalankan perintah gcloud run services update.

  • Untuk memulihkan target penggunaan CPU ke nilai defaultnya, jalankan perintah berikut:

    gcloud run services update SERVICE --scaling-cpu-target=default

    Ganti SERVICE dengan nama layanan Anda.

  • Untuk memulihkan pemanfaatan konkurensi target ke nilai defaultnya, jalankan perintah berikut:

    gcloud run services update SERVICE --scaling-concurrency-target=default

    Ganti SERVICE dengan nama layanan Anda.

  • Untuk memulihkan target penggunaan CPU dan target konkurensi ke nilai defaultnya, jalankan perintah berikut:

    gcloud run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    Ganti SERVICE dengan nama layanan Anda.

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Untuk memulihkan pemanfaatan CPU dan konkurensi ke target defaultnya, hapus atribut run.googleapis.com/scaling-cpu-target dan run.googleapis.com/scaling-concurrency-target dari file YAML Anda:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    Ganti SERVICE dengan nama layanan Anda.

  3. Buat atau update layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

    Perintah gcloud run services replace secara default menggunakan file service.yaml jika ada.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:

Untuk memulihkan penggunaan CPU dan konkurensi ke target defaultnya, hapus atribut cpu_utilization dan concurrency_utilization dari blok scaling dalam konfigurasi Terraform Anda:

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"
    }
  }
}

Ganti kode berikut:

  • SERVICE: nama layanan Anda.
  • REGION: Google Cloud region, misalnya, europe-west1.
  • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Melihat konfigurasi penskalaan

Anda dapat melihat konfigurasi penskalaan menggunakan konsol Google Cloud atau gcloud CLI.

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Klik layanan Anda untuk membuka panel Service details.

  3. Klik tab Penskalaan untuk melihat setelan penskalaan.

gcloud

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE

    Ganti SERVICE dengan nama layanan Anda.

  2. Temukan nilai untuk setelan Target penggunaan CPU: dan Target penggunaan konkurensi: dalam konfigurasi yang ditampilkan.

Praktik terbaik

Anda dapat mengoptimalkan biaya dan mencegah penskalaan berlebih dengan mengurangi jumlah instance, atau Anda dapat meningkatkan performa dengan melakukan penskalaan yang lebih agresif sebagai respons terhadap pemicu tertentu. Untuk menentukan target pemanfaatan yang optimal untuk beban kerja Anda, gunakan strategi berikut:

  • Sebelum menyesuaikan target, identifikasi metrik yang memicu penskalaan layanan Anda. Ikuti langkah-langkah berikut untuk mengidentifikasi metrik penskalaan:

    1. Buka Metrics Explorer di konsol Google Cloud untuk meninjau diagram pemantauan untuk pendorong penskalaan Anda.

    2. Telusuri dan pilih metrik run.googleapis.com/scaling/recommended_instances, lalu tetapkan Agregasi ke Tidak digabungkan untuk melihat metrik yang dikelompokkan menurut pendorong penskalaan.

    Driver dengan nilai tertinggi adalah driver yang mengontrol jumlah instance layanan Anda. Jika Anda ingin driver lain diprioritaskan, atau jika Anda ingin melakukan penskalaan yang lebih atau kurang agresif, sesuaikan target pemanfaatan untuk driver tertentu tersebut.

    Jika Penyesuaian Serentak Adaptif (ACT) adalah pendorong penskalaan, hal ini menunjukkan bahwa pemakaian CPU 1 detik melebihi 90% untuk setiap instance dan Cloud Run membatasi konkurensi permintaan secara dinamis untuk melindungi layanan Anda. Untuk mengurangi ACT yang mendorong penskalaan, pertimbangkan untuk meningkatkan alokasi CPU atau menyesuaikan setelan konkurensi Anda. Untuk mengetahui informasi selengkapnya, lihat Tentang penskalaan otomatis instance.

  • Sesuaikan target secara bertahap, dan tunggu beberapa menit di antara penyesuaian untuk mengamati efeknya terhadap performa.

  • Gunakan pembagian traffic untuk menguji target penskalaan baru dengan mengarahkan sebagian kecil traffic ke revisi terpisah sebelum meluncurkannya ke seluruh layanan Anda.

Tentang target pemanfaatan rendah

Menurunkan target pemakaian ke minimum 0.1 (10%) akan mengubah cara penskalaan layanan Anda secara signifikan.

Manfaat menetapkan target pemanfaatan rendah meliputi:

  • Ketersediaan layanan tinggi: Layanan Anda akan di-scale up lebih awal, sehingga mempertahankan buffer besar kapasitas tidak terpakai untuk menangani lonjakan traffic mendadak tanpa memengaruhi latensi.

  • Penskalaan yang lebih cepat pada jumlah instance yang rendah: Layanan diskalakan dengan lebih andal sebelum mencapai hambatan pemanfaatan tinggi.

Kekurangan menetapkan target pemakaian rendah meliputi:

  • Potensi peningkatan biaya: Anda menjalankan lebih banyak instance daripada yang benar-benar diperlukan untuk beban saat ini, sehingga menyebabkan penagihan yang lebih tinggi.
  • Keputusan penskalaan yang lebih sering: Pada pemakaian yang lebih rendah, Cloud Run memiliki toleransi yang lebih rendah, dan tidak menunggu terlalu lama sebelum melakukan penskalaan.

Langkah berikutnya