Methode zur Implementierung von Leistungstests der MySQL-Datenbank durch das Sysbench-Tool

Methode zur Implementierung von Leistungstests der MySQL-Datenbank durch das Sysbench-Tool

1. Hintergrund

Sysbench ist ein Stresstest-Tool, mit dem die Hardwareleistung des Systems getestet und auch zum Benchmarking der Datenbank verwendet werden kann. Zu den von Sysbench unterstützten Tests gehören ein CPU-Rechenleistungstest, ein Test der Speicherzuweisung und Übertragungsgeschwindigkeit, ein Festplatten-E/A-Leistungstest, ein POSIX-Thread-Leistungstest, ein gegenseitiger Ausschlusstest und ein Datenbankleistungstest (OLTP-Benchmark-Test). Die derzeit unterstützten Datenbanken sind hauptsächlich MySQL-Datenbanken und PG-Datenbanken.

Wenn ein neuer Server online geht, empfiehlt es sich, die Leistung des Servers zu testen. Am besten führen Sie einen horizontalen Vergleich mit den Leistungstestberichten früherer Server desselben Typs durch, um potenzielle Probleme zu identifizieren. Bevor eine neue Maschine online geht, führen Sie eine physische Überprüfung des Servers durch.

Für die Datenbank können wir das Tool Sysbench verwenden, um Datenbank-Benchmarking durchzuführen. In der aktuellen Systemarchitektur lässt sich das Frontend relativ einfach horizontal erweitern, während die Datenbank relativ schwierig ist. Daher spielen Benchmarktests für die Datenbank eine sehr wichtige Rolle. Der Zweck des Datenbank-Benchmarkings besteht darin, die Leistung der Datenbank unter der aktuellen Konfiguration (einschließlich Hardwarekonfiguration, Betriebssystem, Datenbankeinstellungen usw.) zu analysieren, um die Leistungsschwelle von MySQL zu ermitteln und die Konfiguration entsprechend den tatsächlichen Systemanforderungen anzupassen.

2. Installation von Sysbench

1) Installationsbefehl

yum -y install sysbench

2) Überprüfen Sie die installierte Version

sysbench --version

3) Zeigen Sie die Informationen zur installierten Software an (hauptsächlich über den Befehl rpm).

Fragen Sie die Installationsinformationen von Sysbench ab. Beim Testen von MySQL müssen Sie zum Testen das mit Sysbench gelieferte Lua-Skript verwenden. Wenn Sie die Schnellinstallationsmethode verwenden, lautet der Standardskriptpfad: /usr/share/sysbench .

Wenn es in diesem Befehl nicht enthalten ist, führen wir den folgenden Befehl aus, um alle auf dem lokalen Linux-System installierten Sysbench-Softwareprogramme zu überprüfen und zu finden:

rpm -qa sysbench

Auflistung der vollständigen Dateinamen aller Dateien und Verzeichnisse der Software (Liste):

rpm -ql sysbench

3.Sysbench-Syntax

sysbench --help
Verwendung:
 sysbench [Optionen]... [Testname] [Befehl]
Von den meisten Tests implementierte Befehle: Vorbereiten, Ausführen, Bereinigen, Hilfe
Allgemeine Optionen:
 --threads=N Anzahl der zu verwendenden Threads [1]
 --events=N Grenze für die Gesamtzahl der Ereignisse [0]
 --time=N Grenze für die Gesamtausführungszeit in Sekunden [10]
 --forced-shutdown=STRING Anzahl der Sekunden, die nach dem --time-Limit gewartet werden soll, bevor das Herunterfahren erzwungen wird, oder „off“, um es zu deaktivieren [off]
 --thread-stack-size=SIZE Größe des Stapels pro Thread [64K]
 --rate=N durchschnittliche Transaktionsrate. 0 für unbegrenzte Rate [0]
 --report-interval=N Berichten Sie regelmäßig Zwischenstatistiken mit einem angegebenen Intervall in Sekunden. 0 deaktiviert Zwischenberichte [0]
 --report-checkpoints=[LIST,...] Vollständige Statistiken ausgeben und alle Zähler zu angegebenen Zeitpunkten zurücksetzen. Das Argument ist eine Liste von durch Kommas getrennten Werten, die die Zeit in Sekunden darstellen, die seit dem Start des Tests vergangen ist, wenn Berichtsprüfpunkte ausgeführt werden müssen. Berichtsprüfpunkte sind standardmäßig deaktiviert. []
 --debug[=on|off] Weitere Debuginformationen ausgeben [off]
 --validate[=on|off] Validierungsprüfungen durchführen, wo möglich [off]
 --help[=on|off] Hilfe ausgeben und beenden [off]
 --version[=on|off] Version drucken und beenden [off]
 --config-file=DATEINAME Datei mit Befehlszeilenoptionen
 --tx-rate=N veralteter Alias ​​für --rate [0]
 --max-requests=N veralteter Alias ​​für --events [0]
 --max-time=N veralteter Alias ​​für --time [0]
 --num-threads=N veralteter Alias ​​für --threads [1]
Optionen für den Pseudozufallszahlengenerator:
 --rand-type=STRING Zufallszahlenverteilung {uniform,gaussian,special,pareto} [special]
 --rand-spec-iter=N Anzahl der Iterationen, die zur Generierung der Zahlen verwendet werden [12]
 --rand-spec-pct=N Prozentsatz der Werte, die als 'speziell' behandelt werden sollen (für spezielle Verteilung) [1]
 --rand-spec-res=N Prozentsatz der zu verwendenden 'speziellen' Werte (für spezielle Verteilung) [75]
 --rand-seed=N Seed für Zufallszahlengenerator. Wenn 0, wird die aktuelle Zeit als RNG-Seed verwendet. [0]
 --rand-pareto-h=N Parameter h für Pareto-Verteilung [0,2]
Protokolloptionen:
 --verbosity=N Ausführlichkeitsstufe {5 - debug, 0 - nur kritische Meldungen} [3]
 --percentile=N Perzentil, das in Latenzstatistiken berechnet werden soll (1-100). Verwenden Sie den Sonderwert 0, um die Perzentilberechnung zu deaktivieren [95]
 --histogram[=on|off] Latenz-Histogramm im Bericht drucken [off]
Allgemeine Datenbankoptionen:
 --db-driver=STRING gibt den zu verwendenden Datenbanktreiber an (mit „help“ erhalten Sie eine Liste der verfügbaren Treiber) [mysql]
 --db-ps-mode=STRING Verwendungsmodus für vorbereitete Anweisungen {auto, disable} [auto]
 --db-debug[=on|off] druckt datenbankspezifische Debug-Informationen [off]
Einkompilierte Datenbanktreiber:
 MySQL-Treiber
 pgsql - PostgreSQL-Treiber
MySQL-Optionen:
 --mysql-host=[LIST,...] MySQL-Server-Host [localhost]
 --mysql-port=[LIST,...] MySQL-Server-Port [3306]
 --mysql-socket=[LISTE,...] MySQL-Socket
 --mysql-user=STRING MySQL-Benutzer [sbtest]
 --mysql-password=STRING MySQL-Passwort []
 --mysql-db=STRING MySQL-Datenbankname [sbtest]
 --mysql-ssl[=on|off] SSL-Verbindungen verwenden, falls in der Client-Bibliothek verfügbar [off]
 --mysql-ssl-cipher=STRING verwendet einen bestimmten Chiffretyp für SSL-Verbindungen []
 --mysql-compression[=on|off] Komprimierung verwenden, falls in der Client-Bibliothek verfügbar [off]
 --mysql-debug[=on|off] alle Client-Bibliotheksaufrufe verfolgen [aus]
 --mysql-ignore-errors=[LIST,...] Liste der zu ignorierenden Fehler oder „alle“ [1213,1020,1205]
 --mysql-dry-run[=on|off] Trockenlauf, so tun, als ob alle MySQL-Client-API-Aufrufe erfolgreich wären, ohne sie auszuführen [off]
pgsql-Optionen:
 --pgsql-host=STRING PostgreSQL-Serverhost [localhost]
 --pgsql-port=N PostgreSQL-Server-Port [5432]
 --pgsql-user=STRING PostgreSQL-Benutzer [sbtest]
 --pgsql-password=STRING PostgreSQL-Passwort []
 --pgsql-db=STRING PostgreSQL-Datenbankname [sbtest]
Einkompilierte Tests:
 fileio - Datei-E/A-Test
 cpu - CPU-Leistungstest
 Speicher - Geschwindigkeitstest der Speicherfunktionen
 Threads - Leistungstest des Thread-Subsystems
 mutex - Mutex-Leistungstest

Die grundlegende Syntax lautet wie folgt:

sysbench [Optionen]... [Testname] [Befehl]

Befehl ist der von Sysbench auszuführende Befehl, einschließlich Vorbereiten, Ausführen und Bereinigen. Beim Vorbereiten geht es darum, Daten im Voraus für Tests vorzubereiten, beim Ausführen geht es darum, formale Tests durchzuführen und beim Bereinigen geht es darum, die Datenbank nach Abschluss des Tests zu bereinigen.

testname gibt den durchzuführenden Test an. In der alten Version von sysbench konnten Sie den Parameter --test verwenden, um das Testskript anzugeben. In der neuen Version wurde der Parameter --test als veraltet erklärt. Sie können das Skript direkt angeben, anstatt --test zu verwenden. Das im Test verwendete Skript ist ein Lua-Skript. Sie können das mit Sysbench mitgelieferte Skript verwenden oder ein eigenes entwickeln.

Zu den MySQL-Optionen gehören hauptsächlich MySQL-Verbindungsinformationsparameter und MySQL-Ausführungsparameter.

4 Testen

Schritt 1: Stresstestdaten vorbereiten

sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='textpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 vorbereiten

Schritt 2: Stresstest

sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='textpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 ausführen

Die Testergebnisse können zur späteren Analyse auch in eine Datei exportiert werden.

 sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='testpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 ausführen >> ./mysysbench.log 

Schritt 3: Stresstestdaten bereinigen

sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='testpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 Bereinigung

5. Hinweise

(1) Die Testdatenbank muss im Voraus erstellt werden und das Testkonto muss über die Berechtigung zum Erstellen der Datenbank verfügen.

Der Parameter --mysql-db gibt die Testdaten an, der Standardwert ist sbtest.

Wenn es nicht im Voraus erstellt wird, lautet die Fehlermeldung wie folgt:

FATAL: Funktion „sysbench.cmdline.call_command“ fehlgeschlagen: /usr/share/sysbench/oltp_common.lua:83: Verbindungsherstellung fehlgeschlagen
(letzte Nachricht 3 Mal wiederholt)
FATAL: Fehler 1049: Unbekannte Datenbank „sysbench_db“
FATAL: Funktion „sysbench.cmdline.call_command“ fehlgeschlagen: /usr/share/sysbench/oltp_common.lua:83: Verbindungsherstellung fehlgeschlagen
FATAL: Verbindung zum MySQL-Server auf Host „XXX.XXX.XXX.XXX“, Port 3306, nicht möglich, Abbruch...
(letzte Nachricht 1 Mal wiederholt)
FATAL: Fehler 1049: Unbekannte Datenbank „sysbench_db“
(letzte Nachricht 1 Mal wiederholt)

oder (ohne Angabe einer Datenbank)

FATAL: Funktion „sysbench.cmdline.call_command“ fehlgeschlagen: /usr/share/sysbench/oltp_common.lua:83: Verbindungsherstellung fehlgeschlagen
FATAL: Fehler 1049: Unbekannte Datenbank „sbtest“
FATAL: Verbindung zum MySQL-Server auf Host „XXX.XXX.XXX.XXX“, Port 3306, nicht möglich, Abbruch...

(2) Führen Sie keine Tests auf dem Computer durch, auf dem der MySQL-Server ausgeführt wird. Einerseits werden die Auswirkungen des Netzwerks (sogar des LAN) möglicherweise nicht berücksichtigt. Andererseits wirkt sich der Betrieb von Sysbench (insbesondere wenn die Parallelität auf einen hohen Wert eingestellt ist) auf die Leistung des MySQL-Servers aus.

(3) Erhöhen Sie schrittweise die Anzahl der gleichzeitigen Clientverbindungen (Parameter --thread) und beobachten Sie die Leistung des MySQL-Servers bei unterschiedlichen Verbindungszahlen.

(4) Wenn mehrere Tests hintereinander durchgeführt werden, stellen Sie sicher, dass die Daten der vorherigen Tests bereinigt wurden.

(5) Wenn es sich bei dem generierten Bericht um eine grafische Analyse handelt, kann er mit dem Tool Gnuplot analysiert werden.

Zusammenfassen

Oben ist die Methode, die ich Ihnen vorgestellt habe, um Leistungstests der MySQL-Datenbank mit dem Sysbench-Tool durchzuführen. Ich hoffe, sie wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Analyse des Benchmarking-Prozesses von Sysbench für MySQL
  • MySQL-Datenbank implementiert OLTP-Benchmark-Test basierend auf Sysbench
  • Detailliertes Tutorial zum Sysbench-Stresstest von MySQL
  • Detailliertes Tutorial zur Verwendung von Sysbench zum Testen der MySQL-Leistung
  • Tutorial zur Verwendung von Sysbench zum Testen der MySQL-Leistung
  • Einführung in die Verwendung des MySQL Performance Stress Benchmark Tools Sysbench

<<:  Zusammenfassung von 4 Lösungen zum Zurückgeben von Werten auf WeChat Mini-Programmseiten

>>:  Detaillierte Erläuterung der Verwendung und Vorsichtsmaßnahmen von Crontab unter Linux

Artikel empfehlen

Der gesamte Prozess der Entwicklung eines Google-Plug-Ins mit vue+element

Einfache Funktion: Klicken Sie auf das Plug-In-Sy...

So führen Sie py-Dateien direkt unter Linux aus

1. Erstellen Sie zuerst die Datei (wechseln Sie p...

So ändern Sie das MySQL-Passwort auf dem XAMPP-Server (mit Bildern)

Heute habe ich bei der Arbeit an PHP herausgefund...

Ändern des Standard-Bildlaufleistenstils im Front-End-Projekt (Zusammenfassung)

Ich habe viele Projekte geschrieben, bei denen de...

MySql Installer 8.0.18 Visuelles Installationstutorial mit Bildern und Text

Inhaltsverzeichnis 1. MySQL 8.0.18 installieren 2...

Detailliertes Tutorial zur Installation von phpMyAdmin unter Ubuntu 18.04

Wir werden phpMyAdmin installieren, damit es mit ...

Border-Radius IE8-kompatible Verarbeitungsmethode

Laut canisue (http://caniuse.com/#search=border-r...

Pygame-Code zum Erstellen eines Schlangenspiels

Inhaltsverzeichnis Verwendete Pygame-Funktionen E...

Über das WeChat Mini-Programm zur Implementierung von Cloud-Zahlungen

Inhaltsverzeichnis 1. Einleitung 2. Gedankenanaly...

MySQL-Datenmigration mit dem Befehl MySQLdump

Die Vorteile dieser Lösung liegen in der Einfachh...