Tentang penskalaan otomatis instance di layanan Cloud Run

Di Cloud Run, setiap revisi otomatis diskalakan sesuai 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 setelan default ini untuk menentukan instance agar tetap tidak ada aktivitas atau "warm" menggunakan setelan instance minimum. Jika menggunakan CPU di luar permintaan, Anda harus menetapkan instance minimum sama dengan 1.

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

Penskalaan otomatis Cloud Run mengevaluasi ini setiap 5 detik.

CPU selalu dialokasikan dan penskalaan otomatis

Jika mengonfigurasi layanan Cloud Run agar CPU selalu dialokasikan, Anda harus memahami penskalaan perilaku 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 menskalakan dari nol. Untuk beban kerja ini, Anda dapat menetapkan instance minimum > 0, atau menyertakan "permintaan bangun" dalam desain Anda untuk memulai ulang pemrosesan setelah penskalaan ke nol.

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

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 penyebaran skala, permintaan akan menunggu setidaknya selama waktu startup rata-rata instance container layanan ini. Hal ini termasuk saat permintaan memulai penyebaran skala, seperti saat menskalakan dari nol.
  • Jika waktu startup kurang dari 10 detik, permintaan akan dilanjutkan hingga 10 detik.
  • Jika tidak ada instance dalam proses awal dan permintaan tidak memulai penyebaran skala, permintaan akan menunggu hingga 10 detik.

Selama jangka waktu ini, jika instance selesai memproses permintaan, instance akan tersedia untuk memproses permintaan tertunda yang ada 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. Menetapkan batas tinggi tidak berarti revisi Anda akan diskalakan ke jumlah instance yang ditentukan. Artinya bahwa jumlah instance untuk revisi ini tidak boleh melebihi batas maksimum.

Melebihi batas 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 yang tertunda

  • Jika instance baru dimulai, seperti selama penyebaran skala, permintaan akan menunggu setidaknya selama waktu startup rata-rata instance container layanan ini. Hal ini termasuk saat permintaan memulai penyebaran skala, seperti saat menskalakan dari nol.
  • Jika waktu startup kurang dari 10 detik, permintaan akan dilanjutkan hingga 10 detik.
  • Jika tidak ada instance dalam proses awal dan permintaan tidak memulai penyebaran skala, permintaan akan menunggu 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.

Langkah selanjutnya