Mengonfigurasi kontrol penskalaan kustom untuk layanan

Secara default, Cloud Run mengoptimalkan kinerja tinggi dengan target pemanfaatan 60% untuk CPU dan konkurensi, serta secara otomatis meningkatkan jumlah instance 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 kendali lebih besar atas perilaku penskalaan layanan Anda, memungkinkan Anda membuat keputusan yang tepat tentang penskalaan beban kerja sesuai dengan kebutuhan Anda. Anda dapat memilih untuk menggunakan perilaku penskalaan yang ditingkatkan dengan mempertahankan target pemanfaatan default, atau mengonfigurasi target pemanfaatan khusus berikut:

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

Dengan kontrol penskalaan, Anda dapat mengoptimalkan biaya dan meningkatkan prediktabilitas 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 khusus:

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

Memilih ikut serta untuk perilaku penskalaan yang ditingkatkan

Autoscaler Cloud Run merespons dengan tepat terhadap target yang Anda konfigurasikan, bahkan untuk layanan dengan jumlah instance yang rendah. Pertimbangkan untuk mengaktifkan fitur ini agar penskalaan lebih mudah diprediksi, meskipun Anda berniat mempertahankan target pemanfaatan default sebesar 60% untuk CPU dan konkurensi.

Untuk ikut serta, Anda dapat menggunakan CLI gcloud atau YAML saat Anda menerapkan revisi baru.

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

gcloud

Tetapkan nilai target penggunaan CPU dan target penggunaan konkurensi dari revisi tertentu dengan menjalankan perintah gcloud beta run services update berikut:

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

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. Tambahkan atribut run.googleapis.com/scaling-cpu-target dan 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'

    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 akan menggunakan file service.yaml jika ada.

Konfigurasi target khusus

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.

Anda dapat mengonfigurasi kontrol penskalaan menggunakan gcloud CLI atau YAML saat men-deploy revisi baru.

gcloud

Perbarui nilai target CPU utilization dan target concurrency utilization dari revisi tertentu dengan menjalankan perintah gcloud beta run services update.

  • Untuk memperbarui target penggunaan CPU, jalankan perintah berikut:

    gcloud beta 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,95. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.

  • Untuk memperbarui pemanfaatan konkurensi target, jalankan perintah berikut:

    gcloud beta 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 beta 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,95. Anda hanya dapat mengonfigurasi hingga dua digit setelah tanda desimal.
    • CONCURRENCY_TARGET: target penggunaan konkurensi. Tentukan nilai antara 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 pemakaian 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:
      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'

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.
    • CPU_TARGET: target penggunaan CPU. Tentukan nilai dari 0,1 hingga 0,95. 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 akan menggunakan file service.yaml jika ada.

Menonaktifkan kontrol penskalaan

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

Anda dapat menonaktifkan kontrol penskalaan menggunakan gcloud CLI atau YAML saat Anda men-deploy revisi baru.

gcloud

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

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

    gcloud beta 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 beta 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:
      annotations:
        run.googleapis.com/launch-stage: BETA
      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 mengatur atribut run.googleapis.com/scaling-cpu-target menjadi 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-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 akan menggunakan file service.yaml jika ada.

Kembalikan ke nilai default

Saat Anda mengembalikan nilai target CPU atau target pemanfaatan konkurensi ke nilai default, Anda menonaktifkan fitur kontrol penskalaan. Anda dapat memulihkan kontrol penskalaan ke default menggunakan gcloud CLI atau YAML saat Anda men-deploy revisi baru.

gcloud

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

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

    gcloud beta 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 beta run services update SERVICE --scaling-concurrency-target=default

    Ganti SERVICE dengan nama layanan Anda.

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

    gcloud beta 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 penggunaan 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:
      annotations:
        run.googleapis.com/launch-stage: BETA
      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 akan menggunakan file service.yaml jika ada.

Melihat konfigurasi penskalaan

Anda dapat melihat konfigurasi penskalaan Anda menggunakan gcloud CLI atau YAML.

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 pendorong tertentu. Untuk menentukan target pemanfaatan optimal untuk beban kerja Anda, gunakan strategi berikut:

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

    1. Buka Metrics Explorer di konsol Google Cloud untuk meninjau diagram pemantauan penggunaan CPU dan konkurensi Anda.

    2. Cari dan pilih metrik run.googleapis.com/scaling/recommended_instances, lalu atur Agregasi ke TidakTeragregasi untuk melihat metrik yang dikelompokkan berdasarkan penggerak penskalaan.

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

  • Sesuaikan target secara bertahap, dan tunggu beberapa menit di antara setiap penyesuaian untuk mengamati pengaruhnya terhadap kinerja.

  • 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 yang 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 idle untuk menangani lonjakan traffic mendadak tanpa mengalami penurunan latensi.

  • Penskalaan lebih cepat pada jumlah instance yang rendah: Layanan dapat diskalakan dengan lebih andal sebelum mencapai hambatan pemanfaatan yang 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