Πώς κάνουμε Performance Testing στη PostgreSQL με το pgbench

Πώς κάνουμε Performance Testing στη PostgreSQL με το pgbench
Πώς κάνουμε Performance Testing στη PostgreSQL με το pgbench

Το pgbench είναι ένα από τα πιο χρήσιμα εργαλεία της PostgreSQL. Χρησιμοποιείται για benchmarking και stress testing της βάσης δεδομένων, προσομοιώνοντας πολλαπλά ταυτόχρονα transactions (TPS).

Σε αυτό το άρθρο θα δούμε πώς μπορούμε να το στήσουμε, να τρέξουμε τα πρώτα μας benchmarks και να αξιοποιήσουμε προσαρμοσμένα scripts για πιο ρεαλιστικά σενάρια.

Η εγκατάσταση

Πριν τρέξουμε οποιοδήποτε test, το pgbench χρειάζεται να δημιουργήσει έναν τυπικό αριθμό πινάκων. Για να γίνει αυτό τρέχουμε την παρακάτω εντολή απο το τερματικό αφού πρώτα συνδεθούμε με τον χρήστη postgres:

su postgres
pgbench -i -s 10 db_test
  • -i: Δηλώνει την εντολή initialize.
  • -s 10: Ορίζει τον scale factor. Ένα scale factor 1 δημιουργεί 100.000 rows στους βασικούς πίνακες. Με το 10 θα δημιουργηθούν περίπου 1 εκατομμύριο γραμμές στον πίνακα pgbench_accounts, αυξάνοντας το μέγεθος της βάσης για πιο αντιπροσωπευτικά αποτελέσματα.

Μετά την ολοκλήρωση, βλέπουμε τέσσερις νέους πίνακες: pgbench_accounts, pgbench_branches, pgbench_history, και pgbench_tellers.

Εκτέλεση του Standard Benchmark

Αφού η βάση δεδομένων είναι έτοιμη, μπορούμε να εκτελέσουμε ένα βασικό τεστ απόδοσης. Ας υποθέσουμε ότι θέλουμε να δοκιμήσουμε με 50 ταυτόχρονους clients (-c), χρησιμοποιώντας 2 threads (-j), για συνολικό χρόνο 60 δευτερολέπτων (-T):

pgbench -c 50 -j 2 -T 60 db_test
  • -c clients: Ο αριθμός clients που συνδέονται ταυτόχρονα.
  • -j threads: Ο αριθμός worker threads που θα χρησιμοποιηθούν στο λειτουργικό (καλό είναι να ταιριάζει με τους διαθέσιμους πυρήνες CPU).
  • -T seconds: Η διάρκεια του τεστ σε δευτερόλεπτα. Εναλλακτικά, αντί για χρόνο, μπορείτε να ορίσετε συγκεκριμένο αριθμό συναλλαγών ανά client με την παράμετρο -t.

Τα αποτελέσματα

Μετά το τέλος του test, το pgbench εμφανίζει μία αναφορά:

Πώς κάνουμε Performance Testing στη PostgreSQL με το pgbench
  • TPS (Transactions Per Second): Ο σημαντικότερος δείκτης απόδοσης. Δείχνει πόσες συναλλαγές ολοκληρώθηκαν ανά δευτερόλεπτο.
  • Latency Average: Ο μέσος χρόνος που χρειάστηκε για να ολοκληρωθεί μια συναλλαγή.

Χρήση Custom Scripts

Το standard benchmark είναι καλό για γενικούς ελέγχους CPU και Ι/Ο αλλά σπάνια ταιριάζει ακριβώς στα queries της δικιάς μας εφαρμογής, το pgbench επιτρέπει να τρέξουμε τα δικά μας custom sql scripts.

Δημιουργήστε ένα αρχείο, π.χ. custom_workload.sql:

\set aid random(1, 100000 * 10)
SELECT abalance FROM pgbench_accounts WHERE aid = :aid;

Τρέξτε το benchmark χρησιμοποιώντας το αρχείο σας με την παράμετρο -f:

pgbench -c 20 -T 30 -f custom_workload.sql db_test
Πώς κάνουμε Performance Testing στη PostgreSQL με το pgbench

Κλείνοντας να πούμε ότι το pgbench είναι ένα εξαιρετικά ελαφρύ και ισχυρό εργαλείο. Μας επιτρέπει να μετρήσουμε γρήγορα την απόδοση της υποδομής μας, να δοκιμάσουμε αλλαγές στο postgresql.conf όπως shared_buffers, effective_cache_size, work_mem και να αξιολογήσουμε τη συμπεριφορά της βάσης δεδομένων υπό πίεση πριν περάσουμε σε περιβάλλοντα παραγωγής.

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση