Praktik terbaik pengujian beban

Halaman ini memberikan praktik terbaik untuk menguji beban layanan Cloud Run Anda guna menentukan apakah layanan tersebut berhasil diskalakan selama penggunaan produksi, dan untuk menemukan bottleneck yang mencegah penskalaannya.

Pengujian yang akan dijalankan sebelum pengujian beban

Identifikasi dan atasi masalah konkurensi di lingkungan pengembangan atau pengujian kecil sebelum melanjutkan ke pengujian beban. Ukur konkurensi container sebelum melakukan pengujian beban, dan pastikan layanan Cloud Run Anda dimulai dengan andal.

Fokuskan pengujian container Anda pada jumlah inkremental kecil dalam operasi yang diskalakan secara manual. Anda dapat memperkirakan penskalaan manual di Cloud Run dengan menetapkan instance maksimum ke nilai yang ingin Anda skalakan.

Jika Anda baru saja membangun image container atau baru mengubah image container, uji image tersebut secara terpisah sebelum melakukan pengujian beban.

Anda juga harus memeriksa jenis masalah performa lain, seperti latensi dan pemakaian CPU yang berlebihan, sebelum menjalankan pengujian beban skala besar.

Gunakan max instances dengan tepat

Cloud Run menerapkan instance maksimum untuk membatasi penskalaan layanan. Jumlah maksimum instance default adalah 100. Jika Anda merasa uji beban Anda melebihi nilai default ini, pastikan Anda bekerja dengan tim akun Anda di Google dan menetapkan nilai maksimum yang baru. Jika Anda belum memiliki hubungan dengan tim akun, hubungi bagian penjualan Google Cloud.

Jumlah maksimum instance yang dapat Anda pilih bergantung pada batas CPU dan batas memori Anda serta region tempat Anda deploy.

Batasan ini dikelola oleh batas kuota dan dapat ditingkatkan dengan membuat permintaan peningkatan batas kuota.

Pengujian beban di region us-central1

Region Google Cloud us-central1 menawarkan batas kuota yang tinggi, sehingga Google merekomendasikan pengujian beban di us-central1. Koordinasikan dengan tim akun Anda dan kirimkan kasus dukungan yang berisi detail waktu dan skala pengujian jika Anda ingin mencapai batas kuota.

Menguji pemakaian CPU dan profil inisialisasi layanan yang sesuai

Dalam skenario yang ideal, Anda dapat men-deploy versi uji coba layanan Anda ke Cloud Run dan melakukan uji beban secara langsung. Namun, dalam beberapa kasus, Anda mungkin tidak dapat men-deploy versi uji layanan Anda. Misalnya, layanan Cloud Run Anda mungkin menjadi bagian dari ekosistem kompleks yang sulit direplikasi di lingkungan pengujian.

Dalam kasus seperti ini, Anda dapat memperkirakan performa layanan Anda dengan menyimulasikannya dengan layanan yang lebih sederhana, yang memiliki penggunaan CPU dan waktu inisialisasi yang setara. Waktu inisialisasi sangat penting untuk penskalaan yang cepat. Perlu diingat bahwa pengujian dengan sesuatu yang terlalu sederhana juga dapat bermasalah. Misalnya, hindari pengujian dengan layanan hello world sederhana yang menampilkan permintaan yang diterima tanpa pemrosesan apa pun.

Gunakan tes otomatis untuk membuat beban

Anda dapat membuat beban pengujian yang menyebabkan lonjakan traffic terkendali menggunakan tes otomatis, seperti JMeter. Anda dapat menggunakan jumlah grup thread JMeter dan penundaan antara permintaan dalam pengujian JMeter untuk meningkatkan beban.

Anda juga dapat mengirim permintaan HTTP sederhana atau merekam sesi browser dengan JMeter. Dengan Cloud Run, Anda dapat menguji layanan tanpa akses Internet menggunakan Autentikasi Developer. Hal ini memungkinkan akses dari tes otomatis seperti JMeter, untuk berjalan di mesin virtual Compute Engine yang terpasang ke Virtual Private Cloud yang terkait dengan project.

Jangan buat beban dari alat yang tingkat dan konkurensinya tidak dapat dikontrol. Pub/Sub adalah pilihan alat yang buruk untuk membuat beban karena Anda tidak dapat mengontrol tingkat traffic dan jumlah klien. Jika Anda tidak mengetahui tingkat dan konkurensinya, Anda tidak akan tahu apa yang sedang diuji.

Menggunakan analisis log mendetail menggunakan log yang diekspor

Anda memerlukan analisis peristiwa detik demi detik untuk memahami respons layanan Cloud Run Anda terhadap lonjakan traffic yang cepat. Analisis log diperlukan untuk melakukan hal ini karena perincian data monitoring tidak terlalu mendetail. Analisis log juga memungkinkan Anda untuk menyelidiki alasan permintaan dengan latensi tinggi.

Saat menulis log, Anda bisa mendapatkan performa logging yang lebih baik dengan menulis langsung ke stdout, bukan menggunakan library klien Cloud Logging.

Untuk menyiapkan ekspor log sebelum memulai pengujian, buat sink log dengan tujuan BigQuery dan filter penyertaan, seperti:

resource.type="cloud_run_revision"
resource.labels.service_name="[your app]"

Menghindari cold start palsu

Untuk meminimalkan cold start yang dialami pengguna, tetapkan jumlah minimum instance ke minimal 1.

Pastikan layanan Anda diskalakan secara linear

Ulangi pengujian pada beban yang berbeda untuk memastikan bahwa layanan Cloud Run Anda diskalakan secara linear dengan beban dan tidak mencapai bottleneck yang membatasi pada beban yang kurang dari yang Anda harapkan dalam produksi.

Menganalisis dan memvisualisasikan hasil di Colab

Gunakan diagram pemantauan ringkasan untuk mendapatkan pemahaman tingkat tinggi tentang hasil guna melengkapi analisis log yang mendetail menggunakan log yang diekspor.

Diagram pemantauan dapat membantu Anda menemukan:

  • Seberapa cepat instance baru dibuat dan diinisialisasi ke detik terdekat?
  • Seberapa merata permintaan akan didistribusikan ke berbagai instance?
  • Seberapa cepat latensi pada persentil yang berbeda dapat diambil ke nilai yang stabil?

Anda dapat menggunakan antarmuka pengguna konsol Google Cloud untuk BigQuery guna mengintrospeksi skema log yang diekspor dan hasil pratinjau. Jalankan kueri dan hasil plot menggunakan Colab, yang telah memiliki integrasi siap pakai dengan BigQuery, Pandas, dan Matplotlab. Colab juga terintegrasi secara mudah dengan berbagai alat visualisasi data yang lengkap seperti Seaborn.

Menemukan bottleneck

Pengujian beban dapat membantu Anda menemukan keberadaan kode yang tidak efisien dan penskalaan bottleneck. Kode yang tidak efisien akan menimbulkan biaya yang lebih tinggi karena perlu menangani lebih banyak traffic, tetapi tidak selalu mencegah penskalaan. Misalnya, dependensi pada terjemahan database dengan penguncian level tabel dapat menjadi hambatan yang akan mencegah layanan Cloud Run melakukan penskalaan karena hanya satu transaksi yang dapat dijalankan dalam satu waktu.

Memeriksa performa seperti yang dialami oleh klien

Anda dapat mengajukan kueri log yang direkam oleh JMeter, dengan log menyertakan latensi yang diukur di klien. Namun, karena alat pengujian server seperti JMeter tidak sama dengan browser atau klien seluler, sebaiknya jalankan pengujian dengan framework berbasis browser, seperti Selenium Webdriver, atau framework pengujian klien seluler. Berhati-hatilah dengan latensi maksimum yang berlebihan akibat inisialisasi koneksi TLS yang dapat mendistorsi hasil dengan pencilan.

Ringkasan praktik terbaik

Lakukan uji beban untuk menentukan apakah bermigrasi ke Cloud Run adalah pilihan yang tepat dan bahwa layanan Anda dapat menskalakan hingga traffic maksimum yang diharapkan. Jalankan pengujian dengan harness seperti JMeter. Ekspor log ke BigQuery untuk analisis mendetail.

Langkah selanjutnya