Tentang penskalaan otomatis instance di layanan Cloud Run

Di Cloud Run, setiap revisi diskalakan secara otomatis ke jumlah instance yang diperlukan untuk menangani semua permintaan, peristiwa, atau penggunaan CPU yang masuk.

Jika tidak menerima revisi dari berbagai traffic secara default diturunkan ke instance nol. Namun, jika diinginkan, Anda dapat mengubah default ini untuk menentukan instance agar tetap nonaktif atau "warm" dengan menggunakan setelan instance minimum. Jika menggunakan CPU di luar permintaan, Anda harus menetapkan instance minimum yang sama dengan 1.

Selain tingkat permintaan, peristiwa, atau penggunaan CPU yang masuk, jumlah instance yang dijadwalkan juga dipengaruhi oleh:

Penskalaan otomatis Cloud Run mengevaluasi ini setiap 5 detik.

CPU yang selalu dialokasikan dan penskalaan otomatis

Jika mengonfigurasi layanan Cloud Run agar memiliki CPU yang selalu dialokasikan, Anda harus mengetahui perilaku penskalaan ke dan dari nol.

CPU selalu mengalokasikan penskalaan dari nol. Penskalaan dari nol hanya dapat dipicu oleh permintaan, sehingga layanan yang tidak memproses permintaan tidak dapat diskalakan dari nol. Untuk workload ini, Anda dapat menetapkan instance minimum > 0, atau menyertakan "permintaan bangun" dalam desain untuk memulai ulang pemrosesan setelah menskalakan ke nol.

CPU selalu mengalokasikan penskalaan ke nol. Mengingat tidak ada instance yang pernah menggunakan CPU sebesar 0%, melihat semua penggunaan CPU tidak akan pernah diskalakan ke nol. Artinya, keputusan untuk menskalakan dari satu menjadi nol hanya dapat dilakukan dengan memeriksa apakah instance sedang memproses permintaan.

Tentang instance maksimum

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.

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:

  • Jika instance baru dimulai, seperti selama penskalaan keluar, permintaan akan tertunda setidaknya selama waktu startup rata-rata instance penampung layanan ini. Hal ini mencakup saat permintaan memulai penskalaan keluar, seperti saat penskalaan dari nol.
  • Jika waktu startup kurang dari 10 detik, permintaan akan ditangguhkan hingga 10 detik.
  • Jika tidak ada instance yang sedang dalam proses dimulai, dan permintaan tidak memulai penskalaan keluar, permintaan akan ditangguhkan hingga 10 detik.

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 maksimal 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 yang luar biasa, 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

Cloud Run tidak akan segera menonaktifkan instances setelah menangani semua permintaan. Untuk meminimalkan dampak cold start, Cloud Run dapat menyimpan beberapa instance nonaktif selama maksimum 15 menit. Instance ini siap menangani permintaan jika terjadi lonjakan traffic secara tiba-tiba.

Misalnya, ketika instance berhasil menangani permintaan, instance mungkin akan tetap dalam keadaan nonaktif selama beberapa waktu jika permintaan lain perlu ditangani. Instance nonaktif dapat mempertahankan resources seperti koneksi database terbuka. Perlu diingat CPU hanya dialokasikan selama pemrosesan permintaan kecuali Anda mengonfigurasi secara eksplisit layanan Anda agar CPU selalu dialokasikan.

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

  • Jika instance baru dimulai, seperti selama penskalaan keluar, permintaan akan tertunda setidaknya selama waktu startup rata-rata instance penampung layanan ini. Hal ini mencakup saat permintaan memulai penskalaan keluar, seperti saat penskalaan dari nol.
  • Jika waktu startup kurang dari 10 detik, permintaan akan ditangguhkan hingga 10 detik.
  • Jika tidak ada instance yang sedang dalam proses dimulai, dan permintaan tidak memulai penskalaan keluar, permintaan akan ditangguhkan hingga 10 detik.

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 penampung (file bantuan)

Cloud Run mempertimbangkan penggunaan CPU instance untuk penskalaan otomatis, dengan penggunaan CPU instance adalah persentase CPU yang dialokasikan dan digunakan.

Perhatikan bahwa Anda mengalokasikan CPU saat menetapkan batas CPU di tingkat penampung. Jika Anda menggunakan beberapa penampung per instance, alokasi CPU yang sebenarnya untuk instance tersebut adalah jumlah batas CPU yang Anda tetapkan di setiap penampung.

Langkah selanjutnya