Mengoptimalkan jaringan (generasi ke-1)
Kesederhanaan fungsi Cloud Run memungkinkan Anda dengan cepat mengembangkan kode dan menjalankannya dalam lingkungan serverless. Pada skala sedang, biaya untuk menjalankan fungsi masih rendah dan pengoptimalan kode tidak dianggap sebagai prioritas tinggi. Akan tetapi seiring peningkatan skala penerapan Anda, pengoptimalan kode akan semakin penting.
Dokumen ini menjelaskan cara mengoptimalkan jaringan fungsi Anda. Beberapa manfaat mengoptimalkan jaringan adalah sebagai berikut:
- Mengurangi waktu CPU yang diperlukan untuk membuat koneksi baru di setiap panggilan fungsi.
- Mengurangi kemungkinan kehabisan kuota koneksi atau DNS.
Mempertahankan Koneksi Persisten
Bagian ini menunjukkan contoh cara mempertahankan koneksi persisten dalam suatu fungsi. Jika cara ini tidak diikuti, Anda bisa kehabisan kuota koneksi dengan cepat.
Skenario yang dibahas pada bagian ini:
- HTTP/S
- Google API
Permintaan HTTP/S
Cuplikan kode yang dioptimalkan berikut menunjukkan cara mempertahankan koneksi persisten alih-alih membuat koneksi baru pada setiap pemanggilan fungsi:
Node.js
Python
Go
PHP
Sebaiknya gunakan Framework HTTP Guzzle PHP untuk mengirim permintaan HTTP, karena framework tersebut menangani koneksi persisten secara otomatis.
Mengakses Google API
Contoh berikut menggunakan Cloud Pub/Sub, tetapi pendekatan ini juga berfungsi untuk {i>library<i} klien lainnya; misalnya, Cloud Natural Language atau Cloud Spanner. Perhatikan bahwa peningkatan performa dapat bergantung pada library klien tertentu yang diimplementasikan saat ini.
Membuat objek klien Pub/Sub akan menghasilkan satu koneksi dan dua DNS setiap pemanggilan. Untuk menghindari koneksi dan kueri DNS yang tidak perlu, buat objek klien Pub/Sub dalam cakupan global seperti ditunjukkan di bawah ini contoh:
Node.js
Python
Go
Koneksi keluar direset
Aliran koneksi dari fungsi Anda ke VPC dan internet dapat kadang-kadang dihentikan dan diganti ketika infrastruktur dasar dimulai ulang atau diperbarui. Jika aplikasi Anda menggunakan kembali koneksi yang memakan waktu lama, sebaiknya konfigurasikan aplikasi Anda agar menghubungkan koneksi kembali guna menghindari penggunaan ulang koneksi yang tidak aktif.
Menguji fungsi Anda
Untuk mengukur rata-rata jumlah koneksi yang dijalankan fungsi Anda, deploy sebagai fungsi HTTP dan menggunakan kerangka kerja pengujian kinerja untuk memanggilnya di QPS tertentu. Salah satu pilihan yang memungkinkan adalah Artillery, yang dapat dipanggil dengan satu baris:
$ artillery quick -d 300 -r 30 URL
Perintah ini mengambil URL yang diberikan pada 30 QPS selama 300 detik.
Setelah melakukan pengujian, periksa penggunaan kuota koneksi Anda pada Halaman kuota Cloud Run functions API di Konsol Google Cloud. Jika penggunaannya terus-menerus sekitar 30 (atau lebih dari satu), Anda membuat satu (atau beberapa) koneksi dalam setiap pemanggilan. Setelah mengoptimalkan kode, seharusnya Anda akan melihat beberapa (10-30) koneksi saja yang terjadi di awal pengujian.
Anda juga bisa membandingkan biaya CPU sebelum dan setelah pengoptimalan plot kuota CPU di halaman yang sama.