Serentak
Fungsi Cloud Run 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, fungsi Cloud Run 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).
Untuk Python 3.8 dan yang lebih baru, mendukung konkurensi tinggi per instance fungsi memerlukan thread yang cukup untuk menangani konkurensi. Sebaiknya Anda menetapkan variabel lingkungan runtime sehingga nilai thread sama dengan nilai konkurensi, misalnya:
THREADS=8
.
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:
- Fungsi Cloud Run: gcloud CLI atau konsol Google Cloud.
- Cloud Run: gcloud CLI atau konsol Google Cloud.
Menetapkan konkurensi menggunakan fungsi Cloud Run
gcloud
Anda dapat menetapkan nilai konkurensi menggunakan gcloud CLI dengan men-deploy
fungsi 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:
- Buka halaman Ringkasan fungsi Cloud Run di konsol Google Cloud.
- Klik nama fungsi Anda untuk membuka halaman Detail fungsi.
- Klik Edit.
- Luaskan bagian Runtime, build... di akhir halaman, lalu klik tab Runtime.
- Di bagian Konkurensi, masukkan nilai konkurensi di kolom berlabel Permintaan serentak maksimum per instance.
- Klik Berikutnya.
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:
- Buka halaman Ringkasan fungsi Cloud Run di konsol Google Cloud.
- Klik nama fungsi Anda untuk membuka halaman Detail fungsi.
- Di panel berlabel Didukung oleh Cloud Run, klik nama fungsi Anda untuk membuka halaman Detail layanan dari layanan Cloud Run yang mendasarinya.
- Klik Edit & deploy revisi baru di bagian atas halaman.
- Buka tab Container.
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.
Klik Deploy.
Langkah ini diperlukan agar perubahan dapat diterapkan.
Fungsi Cloud Run dibuat berdasarkan dukungan serentak yang disediakan oleh Cloud Run. Untuk mempelajari lebih lanjut, lihat Permintaan serentak maksimum per instance (layanan) dalam dokumentasi Cloud Run.