Metodologi pengujian performa untuk AlloyDB Omni di VM

Pilih versi dokumentasi:

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

Saat melakukan benchmark 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 beban kerja tertentu?
  • Bagaimana perubahan performa saat jumlah data meningkat?
  • 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 tujuan studi performa akan memberi tahu benchmark yang Anda jalankan, lingkungan yang diperlukan, dan metrik yang perlu Anda kumpulkan.

Pengulangan

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 konfigurasi aplikasi atau sistem. Menjalankan pengujian beberapa kali atau dalam jangka waktu yang lebih lama untuk memberikan lebih banyak data dapat membantu menurunkan jumlah variasi.

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

Bagian dari pengulangan adalah memastikan bahwa beban kerja pengujian tetap sama di antara pengujian. Beberapa acak dalam input ke pengujian dapat diterima selama keacakan tidak menyebabkan perilaku aplikasi yang berbeda secara signifikan. Jika input klien yang dibuat secara acak mengubah campuran baca dan tulis dari pengujian ke pengujian, performa akan sangat bervariasi.

Ukuran database, penyimpanan dalam cache, 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 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.

Berupayalah untuk mereplikasi pola I/O aplikasi Anda. Rasio baca terhadap tulis penting untuk profil performa aplikasi Anda.

Durasi Benchmark

Dalam sistem yang kompleks, ada banyak informasi status yang dipertahankan saat sistem dieksekusi: koneksi database dibuat, cache diisi, proses dan thread dibuat. Pada awal pengujian performa, inisialisasi komponen ini dapat menggunakan resource sistem dan memengaruhi performa yang diukur secara negatif jika runtime beban kerja terlalu singkat.

Sebaiknya jalankan pengujian performa setidaknya selama 20 menit untuk meminimalkan efek pemanasan sistem. Ukur performa selama status stabil setelah startup dan cukup lama untuk memastikan bahwa semua aspek operasi database disertakan. Misalnya, checkpoint database adalah fitur penting dari sistem database dan dapat memiliki dampak yang signifikan terhadap performa. Menjalankan benchmark singkat yang selesai sebelum interval checkpoint 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. Faktanya, beberapa perubahan dapat mengimbangi satu sama lain sehingga Anda tidak akan melihat manfaat dari perubahan yang sesuai. Jika server database terlalu banyak digunakan, coba beralih ke mesin dengan lebih banyak vCPU sambil mempertahankan beban yang konstan. Jika server database kurang digunakan, coba tingkatkan beban sambil mempertahankan konfigurasi CPU yang konstan.

Topologi dan latensi jaringan

Topologi jaringan sistem Anda dapat memengaruhi hasil pengujian performa. Latensi antar-zona 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 keseluruhan.

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

Saat men-deploy aplikasi, Anda mungkin ingin lebih memahami dampak latensi lintas zona dengan mempertimbangkan aplikasi web volume tinggi yang umum. Aplikasi ini memiliki load balancer yang mengirim permintaan ke beberapa server web yang di-deploy di beberapa zona untuk ketersediaan tinggi. Latensi mungkin berbeda-beda, bergantung pada server web mana 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 satu server web dari banyak server. Semua server web terhubung ke AlloyDB Omni. Beberapa server berada di zona yang berbeda dengan tempat AlloyDB Omni berjalan, dan akan mengalami latensi yang lebih tinggi saat membuat permintaan database.

Diagram alur yang menunjukkan arsitektur aplikasi web umum.
Gambar 1: Gambar arsitektur aplikasi web umum. Kami mengharapkan 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 menyediakan beban kerja yang cukup untuk mendapatkan pengukuran yang bermakna dalam sistem database. Memantau penggunaan resource sistem yang Anda uji sangat penting. Memantau penggunaan resource sistem klien yang Anda gunakan untuk mendorong beban kerja juga sama pentingnya. Misalnya, jika Anda ingin menentukan jumlah maksimum klien yang dapat didukung sistem database sebelum kehabisan resource CPU, Anda memerlukan sistem klien yang memadai untuk menghasilkan beban kerja yang diperlukan untuk menggunakan semua resource CPU dalam sistem database. Anda tidak akan dapat mendorong sistem database 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 pengujian beban kerja dengan satu dimensi yang bervariasi di antara pengujian dan satu atau beberapa metrik dikumpulkan dan diplot. Jenis pengujian ini memberikan informasi 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 di atas level tersebut.

Pertimbangan ukuran mesin

AlloyDB Omni memperkenalkan banyak fitur baru ke Postgres untuk meningkatkan keandalan dan ketersediaan database. Pemantauan yang diperlukan untuk melakukannya menggunakan resource di mesin yang menjalankan AlloyDB Omni. Pada ukuran mesin yang sangat kecil, resource memori dan CPU terbatas, sehingga untuk benchmark, sebaiknya gunakan ukuran mesin minimal empat vCPU.