Untuk layanan Cloud Run, setiap revisi secara otomatis diskalakan ke jumlah instance yang diperlukan untuk menangani semua permintaan yang masuk.
Jika ada lebih banyak instance yang memproses permintaan, lebih banyak CPU dan memori yang akan digunakan, sehingga mengakibatkan biaya yang lebih tinggi.
Untuk memberi Anda kontrol yang lebih besar, Cloud Run menyediakan setelan permintaan serentak maksimum per instance yang menentukan jumlah maksimum permintaan yang dapat diproses secara bersamaan oleh instance tertentu.
Permintaan serentak maksimum per instance
Anda dapat mengonfigurasi permintaan serentak maksimum per instance. Secara default, setiap instance Cloud Run dapat menerima hingga 80 permintaan secara bersamaan; Anda dapat meningkatkannya sampai maksimum 1.000 permintaan.
Meskipun Anda harus menggunakan nilai default, jika diperlukan, Anda dapat
menurunkan konkurensi maksimum. Misalnya,
jika kode Anda tidak dapat memproses permintaan paralel,
tetapkan konkurensi ke 1
.
Nilai serentak yang ditentukan adalah maksimum dan Cloud Run mungkin tidak mengirim banyak permintaan ke instance tertentu jika CPU instance sudah digunakan secara tinggi.
Diagram berikut menunjukkan bagaimana permintaan serentak maksimum per setelan instance memengaruhi jumlah instance yang diperlukan untuk menangani permintaan serentak yang masuk:
Kapan harus membatasi konkurensi maksimum untuk satu permintaan dalam satu waktu.
Anda dapat membatasi konkurensi sehingga hanya satu permintaan dalam satu waktu yang akan dikirim ke setiap instance yang berjalan. Anda harus mempertimbangkan untuk melakukan hal ini jika:
- Setiap permintaan menggunakan sebagian besar CPU atau memori yang tersedia.
- Image container Anda tidak dirancang untuk menangani beberapa permintaan sekaligus, misalnya, jika container Anda bergantung pada status global yang tidak dapat dibagikan oleh dua permintaan.
Perlu diperhatikan bahwa konkurensi 1
kemungkinan akan berdampak negatif terhadap performa
penskalaan, karena banyak instance harus dimulai untuk menangani lonjakan
permintaan yang masuk.
Studi kasus
Metrik berikut menunjukkan kasus penggunaan ketika 400 klien membuat 3 permintaan per detik ke layanan Cloud Run yang ditetapkan ke jumlah permintaan serentak maksimum per instance 1. Garis atas berwarna hijau menunjukkan permintaan dari waktu ke waktu, garis biru bawah menunjukkan jumlah instance yang mulai menangani permintaan.
Metrik berikut menunjukkan 400 klien yang membuat 3 permintaan per detik ke layanan Cloud Run yang ditetapkan ke permintaan serentak maksimum per instance 80. Baris atas berwarna hijau menunjukkan permintaan dari waktu ke waktu, garis biru bawah menunjukkan jumlah instance yang mulai menangani permintaan. Perhatikan bahwa jauh lebih sedikit instance diperlukan untuk menangani volume permintaan yang sama.
Serentak untuk deployment kode sumber
Jika konkurensi diaktifkan, Cloud Run tidak memberikan isolasi antara permintaan serentak yang diproses oleh instance yang sama. Dalam hal ini, Anda harus memastikan bahwa kode Anda aman dieksekusi secara serentak. Anda dapat mengubahnya dengan menyetel nilai konkurensi yang berbeda. Sebaiknya mulai dengan konkurensi yang lebih rendah seperti 8, lalu tingkatkan. Memulai dengan konkurensi yang terlalu tinggi dapat menyebabkan perilaku yang tidak diinginkan karena batasan resource (seperti memori atau CPU).
Runtime bahasa juga dapat memengaruhi konkurensi. Beberapa dampak khusus bahasa ini ditampilkan dalam daftar berikut:
Node.js pada dasarnya adalah thread tunggal. Untuk memanfaatkan konkurensi, gunakan gaya kode asinkron JavaScript, yang idiomatis di Node.js. Lihat Kontrol alur asinkron dalam dokumentasi resmi Node.js untuk mengetahui detailnya.
Untuk Python 3.8 dan yang lebih baru, mendukung konkurensi tinggi per instance memerlukan thread yang cukup untuk menangani konkurensi. Sebaiknya Anda menetapkan variabel lingkungan runtime sehingga nilai thread sama dengan nilai konkurensi, misalnya:
THREADS=8
.
Langkah selanjutnya
Untuk mengelola permintaan serentak maksimum per instance pada layanan Cloud Run Anda, lihat Menetapkan permintaan serentak maksimum per instance.
Untuk mengoptimalkan permintaan serentak maksimum per setelan instance, lihat tips pengembangan untuk menyesuaikan permintaan serentak.