Halaman ini menjelaskan perilaku penskalaan otomatis default Cloud Run. Untuk opsi penskalaan alternatif tempat Anda dapat mengonfigurasi jumlah instance tertentu, lihat Penskalaan manual.
Secara default, setiap revisi Cloud Run secara otomatis diskalakan ke jumlah instance yang diperlukan untuk menangani permintaan, peristiwa, atau pemanfaatan CPU yang masuk. Anda juga dapat menyesuaikan perilaku penskalaan ini dengan mengonfigurasi target penggunaan CPU dan konkurensi kustom.
Jika revisi tidak menerima traffic apa pun, secara default, revisi akan diskalakan ke nol
instance. Anda dapat mengubah default ini untuk
menentukan instance agar tetap nonaktif atau "warm" dengan menggunakan
setelan instance minimum. Jika layanan Anda
menggunakan CPU meskipun tidak memproses permintaan, Anda harus menetapkan instance
minimum ke 1.
Penskalaan otomatis Cloud Run mengevaluasi metrik berikut secara berkala untuk menentukan jumlah instance yang diperlukan untuk melayani traffic:
Penggunaan CPU dan konkurensi: Cloud Run menyesuaikan jumlah instance untuk menjaga CPU dan konkurensi rata-rata dalam nilai minimum target.
Batas instance: Cloud Run membatasi jumlah instance antara batas maksimum dan minimum yang Anda konfigurasi.
Perilaku penskalaan otomatis layanan horizontal
Cloud Run memiliki dua mekanisme penskalaan otomatis, yaitu penskalaan berbasis metrik dan penskalaan sesuai permintaan untuk menentukan jumlah instance yang diperlukan untuk melayani traffic.
Penskalaan berbasis metrik
Penskalaan berbasis metrik secara otomatis menyesuaikan jumlah instance berdasarkan penggunaan CPU rata-rata dan driver penskalaan konkurensi permintaan rata-rata untuk memberikan kapasitas penayangan yang stabil untuk layanan Cloud Run Anda.
Autoscaler menentukan jumlah instance yang direkomendasikan berdasarkan jumlah maksimum instance yang dihitung untuk setiap pendorong penskalaan berikut secara terpisah:
- Penggunaan CPU: menghitung jumlah instance dengan menghitung rata-rata penggunaan CPU per detik selama periode 1 menit dan membaginya dengan jumlah CPU per instance. Hasil ini dibagi lagi berdasarkan target CPU. Persamaan berikut menentukan penghitungan ini:
\[ \text{Instances} = \left\lceil \dfrac{\left( \frac{\text{Average CPU usage per second over the past minute}}{\text{Number of CPUs per instance}} \right)}{\text{CPU target}} \right\rceil \]
- Permintaan serentak: menghitung jumlah instance dengan merata-ratakan permintaan serentak per detik selama periode 1 menit dan 10 menit, lalu membaginya dengan konkurensi maksimum. Hasil ini dibagi lagi menurut target konkurensi permintaan. Persamaan berikut menentukan penghitungan ini:
\[ \text{Instances} = \left\lceil \dfrac{\left( \frac{\max(\text{average concurrent requests over 1 minute, 10 minutes})}{\text{Maximum concurrency}} \right)}{\text{Concurrency target}} \right\rceil \]
- Penyesuaian konkurensi adaptif (ACT): menghitung jumlah instance yang direkomendasikan untuk konkurensi permintaan rata-rata 1 menit. Metode ini menggunakan nilai ACT setiap instance sebagai kapasitas serentak permintaan instance, bukan permintaan serentak maksimum yang dikonfigurasi. ACT secara dinamis mengurangi konkurensi sebesar 1 pada interval 1 detik saat pemakaian CPU melebihi 90%. Untuk mengetahui informasi selengkapnya, lihat Penyesuaian konkurensi adaptif (ACT).
Untuk setiap revisi layanan, Anda dapat mengonfigurasi jumlah CPU per instance dan konkurensi maksimum.
Cloud Run tidak mendukung penskalaan berdasarkan penggunaan memori.
Secara default, penskalaan berbasis metrik menetapkan nilai minimum 60% untuk target pemakaian CPU dan konkurensi permintaan. Anda dapat menggunakan kontrol penskalaan untuk menentukan target CPU atau konkurensi kustom.
Saat melakukan penskalaan berdasarkan penggunaan CPU, Cloud Run mempertimbangkan penggunaan CPU rata-rata di semua CPU yang dialokasikan ke instance. Jika aplikasi Anda adalah aplikasi ber-thread tunggal, tetapi di-deploy pada instance multi-CPU, hal ini dapat menyebabkan pembacaan pemakaian rata-rata yang rendah, yang berpotensi memengaruhi cara pengambilan keputusan penskalaan berbasis CPU. Untuk mengetahui detail selengkapnya tentang cara mengoptimalkan konfigurasi CPU untuk arsitektur aplikasi Anda, lihat Mengonfigurasi batas CPU dan Menetapkan permintaan serentak maksimum per instance.
Peningkatan skala
Cloud Run meningkatkan jumlah instance berdasarkan pendorong penskalaan yang memerlukan lebih banyak instance. Pada jumlah instance yang rendah, penskalaan berbasis metrik merespons target pemakaian Anda dengan cermat.
Penskalaan berbasis metrik mempertahankan jumlah instance saat ini, sementara pemanfaatan tetap dalam toleransi 10% dari target Anda, relatif terhadap target. Misalnya, dengan target default 60%, jumlah instance tidak berubah saat pemanfaatan tetap antara 54% dan 66%.
Saat penggunaan berada di luar rentang tersebut, penskalaan berbasis metrik menghitung ulang jumlah instance dari penggunaan yang diukur dan target Anda, bukan dari jumlah instance yang berjalan, dan membulatkan hasilnya ke instance utuh berikutnya. Karena pembulatan ini, layanan Anda dapat ditingkatkan skalanya saat pemanfaatan masih di bawah target. Misalnya, layanan yang memerlukan 4,1 instance untuk memenuhi target akan menjalankan 5 instance.
Perkecil skala
Penskalaan otomatis Cloud Run mengurangi jumlah instance yang berjalan saat instance tersebut tidak lagi diperlukan untuk melayani traffic yang masuk. Penskalaan berbasis metrik terus-menerus menyesuaikan jumlah instance yang direkomendasikannya berdasarkan penggunaan. Cloud Run mengurangi jumlah instance yang direkomendasikan hanya jika pemanfaatan turun lebih dari 10% di bawah target, lalu menggunakan penghitungan yang sama dan dibulatkan ke atas untuk menentukan jumlah baru.
Jika penggunaan CPU rata-rata atau permintaan aktif rata-rata menurun, algoritma penskalaan akan mengurangi jumlah instance yang direkomendasikan. Load balancer permintaan Cloud Run mempertimbangkan rekomendasi ini dengan lebih memilih merutekan permintaan masuk ke instance yang direkomendasikan terlebih dahulu. Hal ini membuat instance yang direkomendasikan lebih sibuk dan memungkinkan instance lain menjadi tidak aktif. Cloud Run mengurangi jumlah instance yang tidak direkomendasikan ini dengan memprioritaskannya lebih rendah sehingga hanya menerima traffic jika semua instance yang direkomendasikan sedang sibuk. Untuk menjaga stabilitas, Cloud Run mematikan instance yang diprioritaskan lebih rendah dalam urutan berikut:
- Cloud Run akan menonaktifkan sekelompok instance jika pemakaiannya selama periode 1 menit kurang dari 10%.
- Grup instance kedua tetap berjalan hingga terjadi waktu tunggu tidak ada aktivitas selama 15 menit, sehingga memastikan kapasitas tersedia jika terjadi lonjakan traffic yang tiba-tiba.
Jika layanan Anda melakukan tugas lain meskipun tidak memproses permintaan, seperti menjalankan thread latar belakang, atau memproses tugas asinkron, Anda harus menyetel instance minimum ke setidaknya 1 untuk memastikan CPU tetap dialokasikan untuk pemrosesan latar belakang.
Penskalaan on-demand
Cloud Run menggunakan penskalaan sesuai permintaan jika tidak dapat menemukan instance yang tersedia untuk melayani permintaan yang masuk. Penskalaan sesuai permintaan merespons secara real time terhadap perubahan traffic masuk pada revisi Cloud Run, atau perubahan latensi revisi. Penskalaan ini berupaya memastikan bahwa setiap permintaan masuk dirutekan ke instance dalam waktu singkat. Penskalaan on-demand adalah satu-satunya pendorong untuk penskalaan dari nol. Namun, saat melakukan penskalaan dari N instance, penskalaan berbasis metrik atau sesuai permintaan akan menangani traffic, bergantung pada mana yang dipicu terlebih dahulu.
Karena penskalaan sesuai permintaan merespons perubahan traffic yang tiba-tiba secara real time, Cloud Run mengelola kompromi antara latensi cold start (waktu untuk memulai instance baru) dan latensi antrean tertunda (waktu permintaan menunggu slot terbuka di instance yang ada). Untuk setiap permintaan, sistem akan menentukan apakah mengantre untuk instance mendatang atau instance yang ada lebih cepat (dalam urutan tersebut) sebelum mencoba memulai instance on-demand baru. Permintaan tetap berada dalam antrean tertunda selama maksimum 10 detik atau 3,5 kali waktu cold start yang diprediksi (mana saja yang lebih tinggi) sebelum sistem memicu instance baru sesuai permintaan.
Penyesuaian konkurensi adaptif (ACT)
Cloud Run menggunakan Penyesuaian serentak adaptif (ACT) untuk mencegah pembatasan CPU menyebabkan latensi permintaan yang tinggi. Pendekatan ini mengukur pemakaian CPU untuk setiap instance pada sejumlah permintaan tertentu dan menyesuaikan nilai permintaan serentak maksimum instance secara dinamis agar pemakaian CPU tetap di bawah 90%. ACT menyesuaikan konkurensi berdasarkan skenario berikut:
Setiap kali pemanfaatan CPU selama 1 detik terakhir melebihi 90%, ACT akan mengurangi permintaan serentak maksimum instance sebanyak 1.
Jika instance mencapai batas permintaan serentak maksimumnya, dan pemakaian CPU tetap di bawah 70% selama 1 detik, ACT akan meningkatkan permintaan serentak maksimum untuk instance sebesar 1.
Jika metrik penskalaan menunjukkan bahwa konkurensi tidak pernah mencapai maksimum yang dikonfigurasi, hal ini mungkin karena ACT menurunkan maksimum aktual secara dinamis untuk melindungi performa instance.
Cloud Run menghitung nilai ACT untuk setiap deployment. Metrik ini tidak dipertahankan di seluruh deployment. Jika ACT mengurangi konkurensi di bawah tingkat yang diinginkan, tingkatkan CPU yang dialokasikan per permintaan serentak maksimum. Tugas latar belakang yang menyebabkan lonjakan CPU berkala juga dapat mengganggu pendekatan penskalaan ini.
Anda dapat memantau kapan ACT secara aktif mendorong penskalaan otomatis dengan melihat kolom scaling_driver di konsol Google Cloud . Untuk mengetahui detail tentang cara melihat metrik ini, lihat Mengonfigurasi kontrol penskalaan kustom untuk layanan.
Penagihan dan penskalaan otomatis berbasis instance
Jika Anda mengonfigurasi penagihan berbasis instance untuk layanan Cloud Run, Anda harus memahami perilaku penskalaan ke dan dari nol.
Menskalakan dari nol. Penskalaan dari nol hanya dapat dipicu oleh permintaan, sehingga layanan yang tidak memproses permintaan tidak dapat melakukan penskalaan dari nol. Untuk workload ini, Anda dapat menetapkan instance minimum > 0, atau menyertakan "permintaan aktif" dalam desain Anda untuk memulai ulang pemrosesan setelah penskalaan ke nol.
Menskalakan hingga nol. Mengingat tidak ada instance yang pernah menggunakan CPU 0%, melihat semua penggunaan CPU tidak akan pernah menghasilkan penskalaan ke nol. Artinya, keputusan untuk menskalakan dari satu ke nol hanya dapat dibuat dengan memeriksa apakah instance sedang memproses permintaan.
Tentang instance maksimum untuk layanan
Dalam beberapa kasus Anda mungkin ingin membatasi jumlah instance yang dapat dimulai, karena alasan kontrol biaya atau meningkatkan kompabilitas dengan resource lain yang digunakan pada layanan Anda. Misalnya, layanan Cloud Run Anda mungkin berinteraksi dengan database yang hanya dapat menangani beberapa jumlah koneksi terbuka serentak.
Semua layanan diberi batas instance maksimum secara default, meskipun Anda tidak menentukan batas Anda sendiri. Tetapkan dan pantau batas ini untuk menentukan perilaku penskalaan dan biaya yang terkait dengan layanan Anda. Untuk mengetahui informasi selengkapnya, lihat Batas instance maksimum.
Anda dapat menggunakan setelan instance maksimum untuk membatasi jumlah total instance yang dapat dimulai secara paralel yang didokumentasikan pada bagian Setelan maksimum jumlah instance.
Melampaui jumlah instance maksimum
Dalam keadaan normal, revisi Anda akan diskalakan dengan membuat instance baru untuk menangani beban traffic masuk. Namun, ketika Anda mengatur batas jumlah instance maksimum pada beberapa skenario instance tidak akan cukup untuk memenuhi beban traffic tersebut. Dalam hal ini, permintaan masuk diantrekan (tertunda) sebagai berikut:
Permintaan akan ditunda hingga 3,5 kali waktu mulai rata-rata instance penampung layanan ini, atau 10 detik, mana saja yang lebih besar.
Selama periode waktu ini, jika instance selesai memproses permintaan, instance tersebut akan
tersedia untuk memproses permintaan tertunda yang dimasukkan dalam antrean.
Jika tidak ada instance tersedia selama periode, permintaan gagal dengan
429 kode error.
Jaminan penskalaan
Batas instance maksimum adalah batas atas per revisi dan artinya jumlah instance untuk revisi ini tidak boleh melebihi batas maksimum.
Dalam keadaan normal, Cloud Run dapat melakukan penskalaan ke batas instance maksimum dengan sangat cepat untuk menangani semua permintaan atau peristiwa yang masuk. Namun, menetapkan batas tinggi tidak berarti revisi Anda akan dapat melakukan penyebaran skala ke jumlah instance yang ditentukan pada waktu tertentu. Dalam keadaan tertentu, Cloud Run dapat membatasi penskalaan untuk memastikan layanan yang baik bagi semua pelanggan.
Melebihi jumlah instance maksimum karena lonjakan traffic
Dalam beberapa kasus, seperti cepatnya lonjakan traffic atau pemeliharaan sistem Cloud Run mungkin, dalam jangka waktu singkat membuat instance lebih dari jumlah dalam setelan instance maksimum. Instance baru dapat dimulai dengan melebihi setelan instance maksimum untuk menggantikan instance yang sudah ada dan menyelesaikan proses permintaan inflight dengan menyediakan masa tenggang.
Batas instance maksimum dapat terlampaui pada keadaan operasi normal beberapa kali per minggu. Masa tenggang biasanya berlangsung hingga 15 menit atau hingga nilai yang sudah ditentukan pada setelan waktu tunggu permintaan Instance ekstra ini akan dimusnahkan setelah dalam keadaan nonaktif selama 15 menit.
Jika dibutuhkan beberapa penggantian, pembaruan biasanya tersebar dalam beberapa menit atau jam, tetapi setiap pengganti instance yang berlebihan hanya untuk masa tenggang. Instance yang melebihi nilai instance maksimum biasanya kurang dari dua kali batas instance maksimum yang dikonfigurasi, tetapi dapat jauh lebih besar jika tiba-tiba terjadi lonjakan traffic besar.
Pengalaman uji beban lebih melampaui batas setelan instance maksimum karena sistem mungkin dapat berubah ketika terjadi lonjakan traffic yang ditampilkan untuk mempertahankan kapasitas terhadap beban kerja yang ada dan memiliki pola beban berkelanjutan.
Jika layanan Anda tidak dapat menoleransi aturan sementara ini, Anda mungkin ingin mempertimbangkan margin keamanan mengatur nilai instance maksimum lebih rendah.
Pembagian traffic
Karena batas instance maksimum merupakan batas untuk setiap revisi, jika layanan membagi traffic menjadi beberapa revisi, jumlah instance pada layanan dapat melebihi instance maksimum per revisi. Hal ini dapat diamati dalam metrik Jumlah Instance.
Deployment
Saat Anda men-deploy revisi baru menjalankan 100% traffic, Cloud Run memulai dengan cukup banyak revisi baru sebelum mengarah langsung ke traffic. Hal ini mempengaruhi deployment revisi baru pada latensi permintaan, terutama ketika menjalankan traffic tingkat tinggi. Karena batas instance maksimum merupakan batas untuk setiap revisi, selama deployment, jumlah total instance untuk layanan dapat melebihi instance maksimum per revisi. Hal ini dapat diamati dalam metrik Jumlah Instance.
Instance nonaktif dan meminimalkan cold start
Untuk meminimalkan cold start, Cloud Run dapat membuat instance tetap tidak ada aktivitas selama jangka waktu tertentu setelah selesai menangani permintaan (hingga 15 menit, atau 10 menit untuk GPU).
Instance nonaktif dapat mempertahankan resource seperti koneksi database terbuka. Perhatikan bahwa setelan penagihan default adalah penagihan berbasis permintaan, kecuali Anda mengonfigurasi layanan secara eksplisit agar memiliki penagihan berbasis instance.
Untuk menyimpan instance nonaktif agar tersedia secarapermanen, gunakan
min-instance setelan. Perhatikan bahwa penggunaan
fitur ini akan dikenai biaya meskipun ketika layanan tidak
sedang aktif menyalurkan permintaan.
Penskalaan otomatis dan permintaan yang menunggu keputusan
Permintaan akan ditunda hingga 3,5 kali waktu mulai rata-rata instance penampung layanan ini, atau 10 detik, mana saja yang lebih besar.
Dampak penskalaan otomatis pada layanan pendukung
Seiring bertambahnya jumlah instance secara otomatis, layanan Cloud Run Anda mungkin mencapai batas dengan layanan pendukungnya. Misalnya, Cloud SQL memiliki batas kuota API. Pastikan layanan pendukung ini memiliki kuota cukup dan dapat menangani koneksi dari semua instance pada layanan Cloud Run Anda. Pertimbangkan setelan jumlah maksimum instance untuk menghindari layanan pendukung kelebihan beban.
Penskalaan Otomatis dan Pub/Sub
Google merekomendasikan penggunaan langganan push untuk menggunakan pesan dari topik Pub/Sub di Cloud Run. Pesan yang dikirim diterima, seperti permintaan HTTP oleh container, sehingga memicu perilaku penskalaan otomatis yang sama.
Penskalaan otomatis dan beberapa container (file bantuan)
Cloud Run mempertimbangkan penggunaan CPU instance untuk penskalaan otomatis, dengan penggunaan CPU instance adalah persentase CPU yang dialokasikan dan sedang digunakan.
Perhatikan bahwa Anda mengalokasikan CPU saat menetapkan batas CPU di tingkat container. Jika Anda menggunakan beberapa container per instance, alokasi CPU sebenarnya untuk instance tersebut adalah jumlah batas CPU yang Anda tetapkan pada setiap container.
Langkah berikutnya
- Untuk mengonfigurasi target pemanfaatan kustom atau menonaktifkan pendorong penskalaan, lihat Mengonfigurasi kontrol penskalaan kustom.
- Untuk mempelajari opsi penskalaan lainnya, lihat penskalaan manual.
- Untuk mengelola jumlah maksimum instance pada layanan Cloud Run Anda services, lihat Setelan jumlah maksimum instances.
- Untuk mengelola jumlah maksimum permintaan serentak yang ditangani oleh setiap instance lihat Setelan serentak.
- Untuk mengoptimalkan setelan serentak Anda, lihat tips pengembangan untuk penyesuaian serentak.
- Untuk menentukan instance nonaktif tetap berjalan pada meminimalkan latensi atau cold starts
pada permintaan pertama, lihat
Pengguna
min-instanceuntuk mengaktifkan instance nonaktif.