Dokumen ini menjelaskan rekomendasi untuk menjalankan pengujian performa di AlloyDB Omni pada 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 performa berubah seiring bertambahnya jumlah data?
- Bagaimana perbandingan performa antara dua sistem yang berbeda?
- Berapa banyak waktu respons performa kueri saya yang dikurangi oleh Mesin Berbasis Kolom?
- Berapa beban yang dapat ditangani database sebelum saya mempertimbangkan untuk mengupgrade ke mesin yang lebih canggih?
Memahami sasaran studi performa akan memberi tahu benchmark yang Anda jalankan, lingkungan yang diperlukan, dan metrik yang perlu Anda kumpulkan.
Kemampuan untuk 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 pada aplikasi atau konfigurasi 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 aplikasi di lingkungan tempat sistem eksternal dapat memengaruhi performa aplikasi dapat menyebabkan kesimpulan yang salah. Isolasi penuh sering kali tidak dapat dilakukan saat berjalan di lingkungan cloud multi-tenant, sehingga Anda akan melihat variabilitas yang lebih besar dalam hasilnya
Bagian dari pengulangan adalah memastikan bahwa beban kerja pengujian tetap sama di antara pengujian. Beberapa keacakan dalam input ke pengujian dapat diterima selama keacakan tersebut tidak menyebabkan perilaku aplikasi yang berbeda secara signifikan. Jika input klien yang dihasilkan secara acak mengubah campuran operasi baca dan tulis dari satu operasi ke operasi lainnya, performa akan bervariasi secara signifikan.
Ukuran database, caching, dan pola I/O
Pastikan jumlah data yang Anda gunakan untuk pengujian mewakili aplikasi Anda. Menjalankan pengujian dengan data dalam jumlah kecil saat Anda memiliki data dalam ratusan gigabyte atau terabyte 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 hilang dalam konfigurasi ini.
Berusahalah untuk mereplikasi pola I/O aplikasi Anda. Rasio operasi baca terhadap operasi 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. Di awal pengujian performa, inisialisasi komponen ini dapat menghabiskan resource sistem dan berdampak buruk pada performa yang diukur jika runtime beban kerja terlalu singkat.
Sebaiknya jalankan pengujian performa minimal 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, titik pemeriksaan database adalah fitur penting dari sistem database dan dapat memiliki dampak signifikan terhadap performa. Menjalankan benchmark singkat yang selesai sebelum interval checkpoint menyembunyikan faktor penting ini dalam perilaku aplikasi Anda.
Pengujian metodis
Saat menyesuaikan performa, hanya ubah satu variabel pada satu waktu. Jika mengubah beberapa variabel di antara beberapa pengujian, Anda tidak akan dapat mengisolasi variabel mana yang meningkatkan performa. Bahkan, beberapa perubahan dapat saling mengimbangi sehingga Anda tidak akan melihat manfaat dari perubahan yang sesuai. Jika server database digunakan secara berlebihan, 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 yang konstan.
Topologi dan latensi jaringan
Topologi jaringan sistem Anda dapat memengaruhi hasil pengujian performa. Latensi antarzona berbeda. Saat melakukan pengujian performa, pastikan klien dan cluster database berada di zona yang sama untuk meminimalkan latensi jaringan dan menghasilkan performa terbaik, terutama untuk aplikasi dengan throughput tinggi dan transaksi singkat karena latensi jaringan dapat menjadi komponen besar dari keseluruhan waktu respons transaksi.
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, mungkin ada perbedaan latensi karena topologi jaringan yang mendasarinya.
Saat men-deploy aplikasi, sebaiknya pahami lebih lanjut 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-beda 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 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.
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 tersebut, 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 sangatlah penting. Pemantauan penggunaan resource sistem klien yang Anda gunakan untuk mendorong beban kerja juga sama pentingnya. Misalnya, jika 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 guna menghabiskan semua resource CPU di 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 seiring dengan perubahan satu karakteristik beban kerja. 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 operasi beban kerja dengan satu dimensi yang bervariasi di antara operasi dan satu atau beberapa metrik dikumpulkan dan dipetakan. Jenis pengujian ini memberikan informasi tentang keputusan terkait bottleneck yang ada dalam sistem, jumlah beban yang dapat ditangani sistem dengan konfigurasi tertentu, beban maksimum yang dapat didukung sistem, dan perilaku sistem saat beban meningkat di luar level tersebut.
Pertimbangan ukuran mesin
AlloyDB Omni memperkenalkan banyak fitur baru ke Postgres untuk meningkatkan keandalan dan ketersediaan database. Pemantauan yang diperlukan untuk melakukan ini menggunakan resource di mesin yang menjalankan AlloyDB Omni. Pada ukuran mesin yang sangat kecil, ada resource memori dan CPU yang terbatas, jadi untuk benchmark, sebaiknya gunakan ukuran mesin minimal empat vCPU.