Metodologi pengujian performa untuk AlloyDB Omni di VM

Pilih versi dokumentasi:

Dokumen ini menjelaskan rekomendasi untuk menjalankan uji performa di AlloyDB Omni pada VM. Dokumen ini mengasumsikan bahwa Anda sudah memahami PostgreSQL.

Saat melakukan tolok ukur performa, tentukan hal yang ingin Anda pelajari dari pengujian sebelum memulai. Contoh:

  • Berapa throughput maksimum yang dapat dicapai sistem?
  • Berapa lama waktu yang diperlukan untuk kueri atau workload tertentu?
  • Bagaimana performa berubah seiring bertambahnya jumlah data?
  • Bagaimana perbandingan performa dua sistem yang berbeda?
  • Seberapa besar Columnar Engine mengurangi waktu respons performa kueri saya?
  • Berapa banyak beban yang dapat ditangani database sebelum saya harus mempertimbangkan untuk mengupgrade ke mesin yang lebih canggih?

Memahami sasaran studi performa akan memberi tahu Anda tolok ukur yang dijalankan, lingkungan yang diperlukan, dan metrik yang perlu dikumpulkan.

Dapat diulang

Untuk menarik kesimpulan dari pengujian performa, hasil pengujian harus dapat diulang. Jika hasil pengujian Anda memiliki variasi yang luas, akan sulit untuk menilai dampak perubahan yang Anda buat dalam aplikasi atau konfigurasi sistem. Menjalankan pengujian beberapa kali atau untuk jangka waktu yang lebih lama guna memberikan lebih banyak data dapat membantu menurunkan jumlah variasi.

Idealnya, pengujian performa harus dijalankan pada sistem yang terisolasi dari sistem lain. Menjalankan di lingkungan tempat sistem eksternal dapat memengaruhi performa aplikasi Anda dapat menyebabkan penarikan kesimpulan yang salah. Isolasi penuh sering kali tidak memungkinkan saat berjalan di lingkungan cloud multi-tenant, jadi Anda harus mengharapkan variabilitas yang lebih besar dalam hasilnya

Bagian dari pengulangan adalah memastikan bahwa workload pengujian tetap sama di antara beberapa kali menjalankan pengujian. Beberapa keacakan dalam input ke pengujian dapat diterima asalkan keacakan tersebut tidak menyebabkan perilaku aplikasi yang berbeda secara signifikan. Jika input klien yang dibuat secara acak mengubah campuran baca dan tulis dari satu proses ke proses lainnya, performa akan sangat bervariasi.

Ukuran database, caching, dan pola I/O

Pastikan jumlah data yang Anda uji mewakili aplikasi Anda. Menjalankan pengujian dengan sedikit data saat Anda memiliki ratusan gigabyte atau terabyte data kemungkinan tidak akan memberikan representasi yang sebenarnya tentang performa aplikasi Anda. Ukuran set data juga memengaruhi pilihan yang dibuat oleh pengoptimal kueri. Kueri terhadap tabel pengujian kecil dapat menggunakan pemindaian tabel yang memberikan performa buruk pada skala yang lebih besar dan Anda tidak akan mengidentifikasi indeks yang tidak ada dalam konfigurasi ini.

Berusahalah untuk mereplikasi pola I/O aplikasi Anda. Rasio pembacaan terhadap penulisan penting untuk profil performa aplikasi Anda.

Durasi Tolok Ukur

Dalam sistem yang kompleks, ada banyak informasi status yang dipertahankan saat sistem dijalankan: koneksi database dibuat, cache diisi, proses dan thread dihasilkan. Pada awal pengujian performa, inisialisasi komponen ini dapat menghabiskan resource sistem dan berdampak buruk pada performa yang diukur jika runtime workload terlalu singkat.

Sebaiknya jalankan uji performa selama minimal 20 menit untuk meminimalkan efek pemanasan sistem. Ukur performa selama kondisi stabil setelah startup dan cukup lama untuk memastikan semua aspek operasi database disertakan. Misalnya, titik pemeriksaan database adalah fitur penting dari sistem database dan dapat berdampak signifikan pada performa. Menjalankan benchmark singkat yang selesai sebelum interval checkpoint akan menyembunyikan faktor penting ini dalam perilaku aplikasi Anda.

Pengujian metodis

Saat menyesuaikan performa, ubah hanya satu variabel dalam satu waktu. Jika Anda mengubah beberapa variabel di antara pengujian, Anda tidak akan dapat mengisolasi variabel mana yang meningkatkan performa. Bahkan, beberapa perubahan dapat saling meniadakan sehingga Anda tidak akan melihat manfaat dari perubahan yang tepat. Jika server database terlalu banyak digunakan, coba beralih ke mesin dengan lebih banyak vCPU sambil menjaga beban tetap konstan. Jika server database kurang dimanfaatkan, coba tingkatkan beban sambil mempertahankan konfigurasi CPU tetap konstan.

Topologi Jaringan dan latensi

Topologi jaringan sistem Anda dapat memengaruhi hasil uji performa. Latensi antarzona berbeda. Saat melakukan pengujian performa, memastikan bahwa klien dan cluster database berada di zona yang sama akan meminimalkan latensi jaringan dan menghasilkan performa terbaik–terutama untuk aplikasi dengan throughput tinggi dan transaksi singkat karena latensi jaringan dapat menjadi komponen besar dari waktu respons transaksi secara keseluruhan.

Saat membandingkan performa dua sistem yang berbeda, pastikan topologi jaringan sama untuk kedua sistem. Perlu diperhatikan bahwa variabilitas latensi jaringan tidak dapat sepenuhnya dihilangkan, bahkan dalam zona yang sama, mungkin ada perbedaan latensi karena topologi jaringan yang mendasarinya.

Saat men-deploy aplikasi, Anda mungkin ingin lebih memahami dampak latensi lintas zona dengan mempertimbangkan aplikasi web bervolume tinggi yang umum. Aplikasi memiliki load balancer yang mengirim permintaan ke beberapa server web yang di-deploy di beberapa zona untuk ketersediaan tinggi. Latensi mungkin berbeda bergantung pada server web yang memproses permintaan karena perbedaan latensi lintas zona.

Gambar berikut menunjukkan arsitektur umum aplikasi web yang menggunakan AlloyDB Omni. Permintaan klien ditangani oleh load balancer, yang meneruskan setiap permintaan ke salah satu server web dari sekian banyak server. Semua server web terhubung ke AlloyDB Omni. Beberapa server berada di zona yang berbeda dari tempat AlloyDB Omni berjalan, dan akan mengalami latensi yang lebih tinggi saat membuat permintaan database.

Diagram alur yang menunjukkan arsitektur aplikasi web umum.
Gbr. 1: Gambar arsitektur aplikasi web standar. Kita akan melihat latensi yang lebih rendah saat server web di Zona B membuat permintaan ke database karena berada di zona yang sama dengan database AlloyDB Omni.

Pemantauan Resource

Untuk mengoptimalkan performa sistem database, Anda perlu memantau penggunaan resource sistem database dan sistem klien yang menggunakan sistem database. Dengan memantau kedua sistem, Anda dapat memastikan bahwa sistem klien memberikan workload yang cukup untuk mendapatkan pengukuran yang bermakna dalam sistem database. Memantau pemakaian resource sistem yang Anda uji sangatlah penting. Memantau pemakaian resource sistem klien yang Anda gunakan untuk mendorong workload juga sama pentingnya. Misalnya, jika Anda ingin menentukan jumlah maksimum klien yang dapat didukung oleh sistem database sebelum kehabisan resource CPU, Anda memerlukan sistem klien yang memadai untuk menghasilkan workload yang diperlukan untuk menghabiskan semua resource CPU dalam sistem database. Anda tidak akan dapat mendorong sistem database dengan cukup keras jika mesin klien yang menghasilkan beban tidak memiliki CPU yang memadai.

Pengujian skalabilitas

Pengujian skalabilitas adalah aspek lain dari pengujian performa. Skalabilitas mengacu pada perubahan metrik performa saat satu karakteristik beban kerja bervariasi. Beberapa contoh studi skalabilitas meliputi:

  • Bagaimana peningkatan jumlah permintaan serentak mengubah throughput dan waktu respons?
  • Bagaimana peningkatan ukuran database mengubah throughput dan waktu respons?

Pengujian skalabilitas terdiri dari beberapa kali menjalankan workload dengan satu dimensi yang bervariasi di antara setiap kali menjalankan dan satu atau beberapa metrik yang dikumpulkan dan diplot. Jenis pengujian ini memberikan informasi untuk mengambil keputusan tentang bottleneck yang ada dalam sistem, seberapa banyak beban yang dapat ditangani sistem dengan konfigurasi tertentu, beban maksimum yang dapat didukung sistem, dan perilaku sistem saat beban meningkat melampaui tingkat tersebut.

Pertimbangan ukuran mesin

AlloyDB Omni memperkenalkan banyak fitur baru ke Postgres untuk meningkatkan keandalan dan ketersediaan database. Pemantauan yang diperlukan untuk melakukan hal ini menggunakan resource di mesin yang menjalankan AlloyDB Omni. Pada ukuran mesin yang sangat kecil, resource memori dan CPU yang tersedia terbatas, jadi untuk melakukan tolok ukur, sebaiknya gunakan ukuran mesin minimal empat vCPU.