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 dibutuhkan untuk kueri atau workload 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?
- Seberapa besar 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, menilai dampak perubahan yang Anda buat dalam aplikasi atau konfigurasi sistem akan sulit. 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 aplikasi di lingkungan tempat sistem eksternal dapat memengaruhi performa aplikasi Anda dapat menyebabkan kesimpulan yang salah. Isolasi penuh sering kali tidak mungkin dilakukan saat berjalan di lingkungan cloud multi-tenant, sehingga Anda akan melihat 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 selama keacakan tidak menyebabkan perilaku aplikasi yang berbeda secara signifikan. Jika input klien yang dihasilkan secara acak mengubah kombinasi pembacaan dan penulisan dari satu operasi ke operasi lainnya, performa akan bervariasi secara signifikan.
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 akurat 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 hilang 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 dibuat. Di 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 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, checkpoint 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 beberapa proses, 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 sesuai. 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 pengujian performa. Latensi antarzona berbeda-beda. 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 keseluruhan waktu respons transaksi.
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 ini memiliki load balancer yang mengirimkan 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 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 tersebut. 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 menguji sistem database secara maksimal 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 bervariasinya salah satu karakteristik workload. 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 workload, dengan satu dimensi yang bervariasi di antara operasi 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.