Topik ini menjelaskan cara menggunakan alat Sysbench untuk menguji kinerja beban online transactional processing (OLTP) pada kluster PolarDB for MySQL. Anda dapat mengikuti petunjuk dalam topik ini untuk menjalankan pengujian sendiri dan memahami kinerja sistem database Anda secara cepat.
Alat Uji
Sysbench adalah alat pengujian kinerja open source lintas platform yang terutama digunakan untuk benchmark database, seperti MySQL, serta pengujian kinerja sistem, termasuk CPU, memori, I/O, dan thread. Sysbench mendukung pengujian multi-threaded dan menggunakan skrip Lua untuk mengontrol logika pengujian secara fleksibel, sehingga cocok untuk evaluasi kinerja database dan uji stres.
Lingkungan Pengujian
Instance ECS yang digunakan untuk pengujian dan kluster PolarDB for MySQL harus berada dalam wilayah, zona, dan jaringan VPC yang sama.
CatatanInstance ECS dan kluster PolarDB for MySQL harus berada dalam VPC yang sama. Hal ini memastikan latensi PING dari instance ECS kurang dari 0,2 ms, sehingga menjamin evaluasi kinerja yang valid.
Kluster PolarDB for MySQL yang digunakan untuk pengujian adalah sebagai berikut:
Pengujian kinerja read-only, write-only, dan read/write menggunakan kluster dua node (satu node primary dan satu node read-only).
Titik akhir yang digunakan mencakup titik akhir utama, titik akhir kluster, dan titik akhir kustom. Selama pengujian, kombinasi string koneksi disesuaikan sesuai kebutuhan untuk memaksimalkan pemanfaatan sumber daya kluster database.
Informasi instance ECS untuk pengujian adalah sebagai berikut:
Tipe instans: ecs.c5.4xlarge (16 core CPU, memori 32 GB).
Image: CentOS 7.0 64-bit.
Jumlah instance tergantung pada kluster PolarDB. Untuk node komputasi 8-core, gunakan satu instance ECS. Untuk tipe instans 16-core, gunakan dua instance ECS, dan seterusnya.
Pengaturan parameter kluster PolarDB for MySQL:
Saat pengujian konkurensi tinggi, error
can't create more than max_prepared_stmt_count statementsmungkin terjadi, menyebabkan pengujian gagal. Tingkatkan parametermax_prepared_stmt_countagar lebih banyak prepared statement dapat dibuat. Untuk informasi tentang pengaturan parameter, lihat Setel parameter kluster dan parameter node.Dalam skenario konkurensi tinggi berskala besar, bahkan jika parameter
max_prepared_stmt_countdiatur ke nilai maksimumnya, hal tersebut mungkin tetap tidak cukup. Untuk memastikan pengujian kinerja berjalan lancar, tambahkan parameter--db-ps-mode=disablepada perintah pengujian untuk menonaktifkan fitur Prepared Statement.Untuk kluster berskala sangat besar (88 core ke atas), diperlukan penyetelan parameter tambahan agar sumber daya kluster dapat dimanfaatkan secara optimal. Parameter penyetelan spesifik bergantung pada tipe instans dan skenario bisnis pada halaman pengujian. Sebelum menerapkan optimasi, lakukan evaluasi kinerja menyeluruh dan sesuaikan parameter berdasarkan hasil aktual.
Catatan
Pengujian menggunakan `tables=250` dan `table-size=25000`. Nilai `threads` ditingkatkan secara bertahap. Setiap halaman produk pengujian kinerja hanya menampilkan hasil puncak.
Skenario Pengujian
Pengujian ini mengukur kinerja OLTP untuk skenario read-only, write-only, dan read/write pada kluster dua node (satu node primary dan satu node read-only) di berbagai tipe instans Dedicated.
Metrik
TPS (Transactions Per Second): Jumlah transaksi yang dieksekusi database per detik, berdasarkan jumlah COMMIT yang berhasil.
QPS (Queries Per Second): Jumlah pernyataan SQL (termasuk INSERT, SELECT, UPDATE, dan DELETE) yang dieksekusi database per detik.
Instal Sysbench
Perintah dalam dokumen ini hanya dapat dijalankan oleh pengguna dengan izin root.
Jalankan perintah berikut pada instance ECS untuk menginstal Sysbench.
git clone https://github.com/akopytov/sysbench.git ## Unduh Sysbench dari Git cd sysbench ## Buka direktori Sysbench ./autogen.sh ## Jalankan autogen.sh ./configure make -j ## Kompilasi make installJalankan perintah berikut untuk mengonfigurasi client Sysbench. Hal ini memungkinkan kernel menggunakan semua core CPU untuk memproses paket data (default hanya 2 core) dan mengurangi context switching antar core CPU.
sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*; do echo ffff>$x/rps_cpus; done'Catatanffff menunjukkan bahwa 16 core digunakan. Ubah nilai ini sesuai konfigurasi Anda. Misalnya, jika instance ECS Anda memiliki 8 core, masukkan
ff. Jika memiliki 16 core, masukkan ffff, dan seterusnya.sudo sh -c "echo 32768 > /proc/sys/net/core/rps_sock_flow_entries" sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt" sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-1/rps_flow_cnt"
Metode pengujian
Metode pengujian berikut menggunakan kluster PolarDB for MySQL Cluster Edition sebagai contoh.
Dapatkan titik akhir dan port kluster PolarDB for MySQL. Untuk informasi selengkapnya, lihat Kelola alamat koneksi.
Atur Primary Node Accepts Read Requests menjadi Yes untuk titik akhir kluster PolarDB for MySQL. Untuk informasi selengkapnya, lihat Konfigurasi proksi database.
Login ke database
Jalankan perintah berikut pada instance ECS untuk membuat database bernama
testdbdi kluster PolarDB for MySQL.mysql -h XXX -P XXX -u XXX -p XXX -e 'create database testdb'CatatanGanti
XXXdalam perintah ini dan perintah berikutnya dengan titik akhir kluster, nomor port, username, dan password kluster PolarDB for MySQL Anda. Parameter tersebut dijelaskan sebagai berikut.Parameter
Deskripsi
-hTitik akhir kluster dari kluster PolarDB for MySQL.
-PNomor port kluster PolarDB for MySQL.
-uUsername untuk kluster PolarDB for MySQL.
-pKata sandi untuk nama pengguna.
Perintah pengujian untuk skenario tertentu adalah sebagai berikut:
Pengujian skenario read-only (OLTP Read Only)
CatatanDalam skenario read-only ini, --range-selects=0 diatur, yang setara dengan pengujian skenario oltp_point_selects.
Persiapkan data
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_only prepareJalankan pengujian read-only
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_only runBersihkan data
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_only cleanup
Bidang-bidang dalam pernyataan pengujian dijelaskan sebagai berikut:
Kategori parameter
Konten yang Ditampilkan
Deskripsi
tables
Jumlah tabel data
Jumlah total tabel data dalam pengujian.
table_size
Jumlah baris dalam tabel data
Jumlah catatan dalam setiap tabel.
Ukuran volume data
Volume data tabel, dalam satuan seperti MB atau GB.
threads
Jumlah thread konkuren
Jumlah thread yang dikonfigurasi saat ini.
Status thread
Memungkinkan Anda melihat status berjalan thread secara real time.
Pengujian campuran read/write (OLTP Read Write)
CatatanIni mensimulasikan workload bisnis campuran read/write yang khas.
Parameter inti seperti `tables`, `table-size`, dan `threads` ditampilkan secara satu-satu di halaman data pengujian.
Persiapkan data
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_write prepareJalankan pengujian read/write
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_write runPembersihan data
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_write cleanup
Bidang-bidang dalam pernyataan pengujian dijelaskan sebagai berikut:
Kategori parameter
Konten yang ditampilkan
Deskripsi
tables
Jumlah tabel data
Jumlah total tabel data dalam pengujian.
table_size
Jumlah baris dalam tabel data
Jumlah catatan dalam setiap tabel.
Ukuran volume data
Volume data tabel, dalam satuan seperti MB atau GB.
threads
Jumlah thread konkuren
Jumlah thread yang dikonfigurasi saat ini.
Status thread
Memungkinkan Anda melihat status berjalan thread secara real time.
Pengujian write-only (OLTP Write Only)
CatatanParameter inti seperti `tables`, `table-size`, dan `threads` ditampilkan secara satu-satu di halaman data pengujian.
Persiapkan data
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_write_only prepareLakukan pengujian write
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_write_only runMembersihkan Data
sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_write_only cleanup
Bidang-bidang dalam pernyataan pengujian dijelaskan sebagai berikut:
Kategori parameter
Konten yang ditampilkan
Deskripsi
tables
Jumlah tabel data
Jumlah total tabel data dalam pengujian.
table_size
Jumlah baris dalam tabel data
Jumlah catatan dalam setiap tabel.
Ukuran volume data
Volume data tabel, dalam satuan seperti MB atau GB.
threads
Jumlah thread konkuren
Jumlah thread yang dikonfigurasi saat ini.
Status thread
Memungkinkan Anda melihat status berjalan thread secara real time.
Langkah selanjutnya
Untuk hasil pengujian PolarDB for MySQL 8.0.1, lihat Kinerja PolarDB for MySQL 8.0.1 (Cluster Edition).
Untuk hasil pengujian PolarDB for MySQL 5.7, lihat Kinerja PolarDB for MySQL 5.7 (Cluster Edition).
Untuk hasil pengujian PolarDB for MySQL 5.6, lihat Kinerja PolarDB for MySQL 5.6 (Cluster Edition).