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 menyempurnakan perilaku penskalaan ini dengan mengonfigurasi target CPU dan pemakaian kustom.
Jika tidak menerima traffic apa pun, revisi akan diskalakan ke nol instance secara default. 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, 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 pemakaian 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 merata-ratakan penggunaan CPU per detik selama periode 1 menit dan membaginya dengan jumlah CPU per instance. Hasil ini dibagi lagi berdasarkan target CPU.
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 serentak permintaan.
Untuk setiap revisi layanan, Anda dapat mengonfigurasi jumlah CPU per instance dan konkurensi maksimum.
Cloud Run tidak mendukung penskalaan berdasarkan pemanfaatan memori.
Secara default, penskalaan berbasis metrik menetapkan nilai minimum 60% untuk target pemakaian CPU dan serentak permintaan. Anda dapat mengaktifkan kontrol penskalaan (Pratinjau) untuk menentukan target CPU atau konkurensi kustom.
Saat melakukan penskalaan berdasarkan pemakaian CPU, Cloud Run mempertimbangkan pemakaian 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 keputusan penskalaan berbasis CPU dibuat. 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 mana pun yang memerlukan lebih banyak instance. Untuk mencegah mulai dan berhentinya instance secara cepat selama perubahan traffic kecil, autoscaler menunggu hingga pemanfaatan mencapai sekitar 90% kapasitas sebelum meningkatkan jumlah instance.
Anda dapat memilih untuk menggunakan kontrol penskalaan (Pratinjau) untuk beralih ke model penskalaan otomatis dengan presisi yang lebih tinggi, yang memungkinkan penskalaan otomatis berbasis metrik Cloud Run merespons secara akurat target yang Anda konfigurasi, bahkan untuk layanan dengan jumlah instance yang rendah. Jika layanan Anda berbeda dari konfigurasi target kustom lebih dari batas toleransi 10%, Cloud Run merekomendasikan jumlah instance yang diperlukan untuk membuat pendorong penskalaan yang memicu penskalaan berada di bawah target.
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.
Saat 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. Tindakan 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.
Penskalaan sesuai permintaan
Cloud Run menggunakan penskalaan on-demand 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. Penskalakan ini berupaya memastikan bahwa setiap permintaan masuk dirutekan ke instance dalam waktu singkat, dan merupakan satu-satunya pendorong untuk penskalaan dari nol.
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 mulai dingin 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 untuk menjaga pemakaian CPU di bawah 90%. ACT menyesuaikan serentak berdasarkan skenario berikut:
Setiap kali pemanfaatan CPU selama 1 detik terakhir melebihi 90%, ACT akan mengurangi jumlah maksimum permintaan serentak instance sebanyak 1.
Jika instance mencapai batas permintaan serentak maksimumnya, dan penggunaan 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. Metrik ACT tidak dapat diamati.
Penagihan dan penskalaan otomatis berbasis instance
Jika 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 berada pada 0% CPU, 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 diskalakan 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 aktif 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 jika 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 tertunda
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.