Serentak

Cloud Functions (generasi ke-2) mendukung penanganan beberapa permintaan serentak pada satu instance fungsi. Hal ini dapat membantu mencegah cold start karena instance yang sudah di-warm up dapat memproses beberapa permintaan secara bersamaan, sehingga mengurangi latensi keseluruhan.

Jika konkurensi diaktifkan, Cloud Functions (generasi ke-2) tidak memberikan isolasi antara permintaan serentak yang diproses oleh instance fungsi yang sama. Dalam hal ini, Anda harus memastikan bahwa kode fungsi aman dieksekusi secara serentak. Perhatikan pertimbangan berikut tentang runtime bahasa tertentu:

  • 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.

  • 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).

Secara default, instance fungsi hanya menangani satu permintaan dalam satu waktu. Anda dapat mengubah perilaku ini per fungsi dengan menetapkan nilai konkurensi seperti yang ditunjukkan di bagian berikutnya.

Menetapkan nilai konkurensi

Nilai konkurensi default adalah 1. Anda dapat menetapkan nilai serentak fungsi untuk mengganti nilai default. Nilai konkurensi mewakili jumlah maksimum permintaan serentak yang dapat ditangani oleh satu instance fungsi.

Nilai konkurensi yang lebih besar dari 1 mengakibatkan kode fungsi Anda dieksekusi secara serentak pada satu instance. Nilai konkurensi maksimum adalah 1000 (meskipun sebaiknya mulai dengan nilai yang lebih rendah dan meningkatkannya). Jika nilai konkurensi ditetapkan lebih besar dari 1, fungsi harus memiliki 1 atau beberapa vCPU. Lihat Batas memori untuk mengetahui nilai memori dan vCPU default.

Anda dapat menetapkan konkurensi untuk fungsi dengan salah satu cara berikut:

Menetapkan konkurensi menggunakan Cloud Functions

gcloud

Anda dapat menetapkan nilai konkurensi menggunakan gcloud CLI dengan men-deploy fungsi generasi ke-2 dengan flag --concurrency:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

Dengan CONCURRENCY_VALUE adalah jumlah maksimum permintaan serentak yang diizinkan per instance container. Biarkan konkurensi tidak ditentukan untuk menerima nilai default server.

Konsol

Untuk menetapkan nilai konkurensi menggunakan konsol Google Cloud:

  1. Buka halaman Ringkasan Cloud Functions di konsol Google Cloud.
  2. Klik nama fungsi Anda untuk membuka halaman Detail fungsi.
  3. Klik Edit.
  4. Luaskan bagian Runtime, build... di akhir halaman, lalu klik tab Runtime.
  5. Di bagian Konkurensi, masukkan nilai konkurensi di kolom berlabel Permintaan serentak maksimum per instance.
  6. Klik Next.
  7. Klik Deploy.

    Langkah ini diperlukan agar perubahan dapat diterapkan.

Menetapkan konkurensi menggunakan Cloud Run

gcloud

Untuk menetapkan nilai konkurensi menggunakan gcloud CLI, perbarui layanan Cloud Run yang mendasarinya dan tentukan flag --concurrency:

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

Dengan CONCURRENCY_VALUE adalah jumlah maksimum permintaan serentak yang diizinkan per instance container. Biarkan konkurensi tidak ditentukan untuk menerima nilai default server.

Konsol

Untuk menetapkan nilai konkurensi menggunakan konsol Google Cloud:

  1. Buka halaman Ringkasan Cloud Functions di konsol Google Cloud.
  2. Klik nama fungsi Anda untuk membuka halaman Detail fungsi.
  3. Di panel berlabel Didukung oleh Cloud Run, klik nama fungsi Anda untuk membuka halaman Detail layanan dari layanan Cloud Run yang mendasarinya.
  4. Klik Edit & deploy revisi baru di bagian atas halaman.
  5. Buka tab Container.
  6. Masukkan nilai konkurensi di kolom berlabel Permintaan serentak maksimum per instance.

    Jika nilai yang Anda berikan untuk Permintaan serentak maksimum per instance lebih besar dari 1, scroll halaman ke bawah dan buka bagian Container. Pastikan kolom CPU berisi nilai 1 atau lebih.

  7. Klik Deploy.

    Langkah ini diperlukan agar perubahan dapat diterapkan.

Cloud Functions generasi ke-2 dibuat berdasarkan dukungan serentak yang disediakan oleh Cloud Run. Untuk mempelajari lebih lanjut, lihat Permintaan serentak maksimum per instance (layanan) dalam dokumentasi Cloud Run.