1. MySQLs eigenes Stresstest-Tool Mysqlslap mysqlslap ist ein Benchmark-Tool, das mit MySQL geliefert wird. Das Tool fragt Daten mit einfacher Syntax ab, ist flexibel und benutzerfreundlich. Das Tool kann mehrere Clients simulieren, die gleichzeitig Abfrageaktualisierungen an den Server senden, Leistungstestdaten liefern und Leistungsvergleiche mehrerer Engines ermöglichen. mysqlslap bietet eine intuitive Grundlage für die Überprüfung der MySQL-Leistung vor und nach der Optimierung. Systembetriebs- und -wartungspersonal sowie DBA-Mitarbeiter sollten einige gängige Stresstest-Tools beherrschen, um die Obergrenze des von der Online-Datenbank unterstützten Benutzerverkehrs und ihre Stressresistenz genau zu erfassen. 1. Ändern Sie die standardmäßige maximale Anzahl von Verbindungen Bevor Sie MySQL einem Stresstest unterziehen, müssen Sie die standardmäßige maximale Anzahl an Verbindungen wie folgt ändern: [root@mysql ~]# vim /etc/my.cnf ................ [mysqld] max_Verbindungen=1024 [root@mysql ~]# systemctl starte mysqld neu ` Zeigen Sie die maximale Anzahl an Verbindungen an `mysql> zeigt Variablen wie „max_connections“ an; +-----------------+--------+ | Variablenname | Wert | +-----------------+--------+ | max_Verbindungen | 1024 | +-----------------+--------+ 1 Zeile im Satz (0,00 Sek.) So führen Sie einen Stresstest durch: [root@mysql ~]# mysqlslap --defaults-file=/etc/my.cnf --concurrency=100,200 --iterations=1 --number-int-cols=20 --number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=gemischt --engine=myisam,innodb --number-of-queries=2000 -uroot -p123 --verbose Die Testbeschreibung des obigen Befehls: Simulieren Sie zwei Lese- und Schreibparallelitätstests, das erste Mal 100, das zweite Mal 200, und das SQL-Skript wird automatisch generiert. Die Testtabelle enthält 20 Init-Felder und 30 Zeichenfelder. Jedes Mal werden 2000 Abfrageanforderungen ausgeführt. Die Test-Engines sind Myisam und InnoDB. (Viele der oben genannten Optionen sind Standardwerte und können weggelassen werden. Wenn Sie die Erklärung der einzelnen Optionen wissen möchten, können Sie zur Abfrage mysqlslap --help verwenden). Beschreibung der Testergebnisse:
Sie können die Anzahl gleichzeitiger Anfragen schrittweise erhöhen, um Stresstests entsprechend dem tatsächlichen Bedarf durchzuführen. 2. Verwenden Sie Sysbench-Tools von Drittanbietern für Stresstests 1. Installieren Sie das Sysbench-Tool [root@mysql ~]# yum -y install epel-release #Drittanbieter-Epel-Quelle installieren[root@mysql ~]# yum -y install sysbench #Sysbench-Tool installieren[root@mysql ~]# sysbench --version #Bestätigen Sie, dass das Tool installiert wurde sysbench 1.0.17 Sysbench kann die folgenden Tests durchführen:
Datenbank-Leistungstest (OLTP-Benchmark-Test, der über Lua-Skripte im Verzeichnis /usr/share/sysbench/ ausgeführt werden muss, z. B. das Skript oltp_read_only.lua, um schreibgeschützte Tests durchzuführen). Sysbench kann den Test auch anpassen, indem Sie beim Ausführen des Befehls Ihr eigenes Lua-Skript angeben. 2. Sehen Sie sich die Hilfeoptionen des Sysbench-Tools an [root@mysql ~]# sysbench --help Verwendung: sysbench [Optionen]... [Testname] [Befehl] Von den meisten Tests implementierte Befehle: prepare run cleanup help # Verfügbare Befehle, vier Allgemeine Optionen: # Allgemeine Optionen --threads=N Die Anzahl der zu verwendenden Threads, Standard ist 1 [1] --events=N Maximale Anzahl erlaubter Ereignisse [0] --time=N Maximale 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 Stapelgröße für jeden Thread [64K] --rate=N Durchschnittliche Übertragungsrate. 0 bedeutet keine Begrenzung [0] --report-interval=N Periodisch Zwischenstatistiken mit dem angegebenen Intervall in Sekunden berichten 0 Zwischenberichterstattung deaktivieren [0] --report-checkpoints=[LIST,...] Vollständige Statistiken ausgeben und alle Zähler zu den angegebenen Zeitpunkten zurücksetzen. Der Parameter ist eine durch Kommas getrennte Liste von Werten, die angeben, dass ein Berichtsprüfpunkt ausgeführt werden muss, wenn diese Zeitspanne (in Sekunden) seit dem Start des Tests vergangen ist. Die Berichtsprüfpunkte sind standardmäßig deaktiviert. [] --debug[=on|off] Weitere Debug-Informationen ausgeben [off] --validate[=on|off] Führt Validierungsprüfungen durch, wenn möglich [off] --help[=on|off] Hilfemeldung anzeigen und beenden [off] --version[=on|off] Versionsinformationen anzeigen und beenden [off] --config-file=DATEINAME Datei mit Kommandozeilenoptionen --tx-rate=N Veraltet, verwenden Sie stattdessen --rate [0] --max-requests=N ist veraltet, verwenden Sie stattdessen --events [0] --max-time=N ist veraltet, verwenden Sie stattdessen --time [0] --num-threads=N ist veraltet, verwenden Sie stattdessen --threads [1] Optionen für den Pseudozufallszahlengenerator: # 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] Log options: # Log options --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: # Allgemeine Datenbankoptionen --db-driver=STRING Geben Sie den zu verwendenden Datenbanktreiber an (mit „Hilfe“ erhalten Sie eine Liste der verfügbaren Treiber). --db-ps-mode=STRING Verwendungsmodus für vorbereitete Anweisungen {auto, disable} [auto] --db-debug[=on|off] druckt datenbankspezifische Debug-Informationen [off] Kompilierte Datenbanktreiber: # Integrierte Datenbanktreiber, die standardmäßig MySQL und PostgreSQL unterstützen MySQL-Treiber pgsql - PostgreSQL-Treiber MySQL-Optionen: # MySQL-Datenbank-spezifische 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: # PostgreSQL-Datenbank-spezifische Optionen --pgsql-host=STRING PostgreSQL-Server-Host [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: # Eingebauter Testtyp fileio - Datei-E/A-Test cpu - CPU-Leistungstest Speicher - Geschwindigkeitstest der Speicherfunktionen Threads - Leistungstest des Thread-Subsystems mutex - Mutex-Leistungstest Eine Liste der Optionen für jeden Test finden Sie unter „Sysbench <Testname>-Hilfe“. 3. Sysbench testet die Leistung von MySQL-Datenbanken 1) Testdaten vorbereiten #Sehen Sie sich die Verwendung des Lua-Skripts an, das mit sysbench geliefert wird [root@mysql ~]# sysbench /usr/share/sysbench/oltp_common.lua help #Die sbtest-Bibliothek muss erstellt werden. sbtest ist der von Sysbench verwendete Standardbibliotheksname [root@mysql ~]# mysqladmin -uroot -p123 create sbtest; #Bereiten Sie dann die zum Testen verwendeten Tabellen vor. Diese Testtabellen werden in der Testbibliothek sbtest abgelegt. Das hier verwendete Lua-Skript ist /usr/share/sysbench/oltp_common.lua. [root@mysql ~]# sysbench --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=10 --table_size=100000 vorbereiten #--tables=10 bedeutet, dass 10 Testtabellen erstellt werden. #--table_size=100000 bedeutet, dass in jede Tabelle 100.000 Datenzeilen eingefügt werden. #prepare gibt an, dass dies der Vorgang der Nummernvorbereitung ist. 2) Bestätigen Sie, dass die Testdaten vorhanden sind [root@mysql ~]# mysql -uroot -p123 sbtest; #Melden Sie sich bei der sbtest-Bibliothek anmysql> show tables; #Zeigen Sie die entsprechenden Tabellen an+------------------+ | Tabellen_in_sbtest | +------------------+ |sbtest1| |sbtest10| |sbtest2| |sbtest3| |sbtest4| |sbtest5| |sbtest6| |sbtest7| |sbtest8| |sbtest9| +------------------+ 10 Zeilen im Satz (0,00 Sek.) mysql> select count(*) from sbtest1; #Wählen Sie nach dem Zufallsprinzip eine Tabelle aus und bestätigen Sie, dass sie 100.000 Datensätze enthält+----------+ | Anzahl(*) | +----------+ | 100000 | +----------+ 1 Zeile im Satz (0,01 Sek.) 3) Datenbanktests und Ergebnisanalyse Ändern Sie die Anweisung, mit der die Daten zuvor vorbereitet wurden, leicht und Sie können sie zum Testen verwenden. Es ist zu beachten, dass das zuvor verwendete Lua-Skript oltp_common.lua ist. Dabei handelt es sich um ein allgemeines Skript, das von anderen Lua-Skripten aufgerufen wird und nicht direkt zum Testen verwendet werden kann. Daher verwende ich das Skript oltp_read_write.lua, um Lese- und Schreibtests durchzuführen. Es gibt viele andere Testtypen, z. B. Nur-Lese-Tests, Nur-Schreib-Tests, Löschtests, Masseneinfügetests und so weiter. Sie können das entsprechende Lua-Skript finden und aufrufen. #Führen Sie den Testbefehl wie folgt aus: [root@mysql ~]# sysbench --threads=4 --time=20 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=100000 laufen Der obige Befehl gibt die folgenden Ergebnisse zurück: [root@mysql ~]# sysbench --threads=4 --time=20 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=100000 ausführen sysbench 1.0.17 (unter Verwendung des Systems LuaJIT 2.0.4) Ausführen des Tests mit folgenden Optionen: Anzahl der Threads: 4 Zwischenergebnisse alle 5 Sekunden melden Initialisierung des Zufallszahlengenerators ab aktueller Zeit Arbeitsthreads werden initialisiert … Themen gestartet! #Die folgenden Ergebnisse werden alle 5 Sekunden zurückgegeben. Die statistischen Indikatoren umfassen: # Anzahl der Threads, tps (Transaktionen pro Sekunde), qps (Abfragen pro Sekunde), # Lese-/Schreib-/andere Zeiten pro Sekunde, Latenz, Fehler pro Sekunde, Wiederverbindungen pro Sekunde [5 s] thds: 4 tps: 1040,21 qps: 20815,65 (r/w/o: 14573,17/4161,25/2081,22) lat (ms, 95 %): 7,17 err/s: 0,00 reconn/s: 0,00 [ 10s ] thds: 4 tps: 1083,34 qps: 21667,15 (r/w/o: 15165,93/4334,55/2166,68) lat (ms,95%): 6,55 err/s: 0,00 reconn/s: 0,00 [ 15s ] thds: 4 tps: 1121,57 qps: 22429,09 (r/w/o: 15700,64/4485,30/2243,15) lat (ms,95%): 6,55 err/s: 0,00 reconn/s: 0,00 [ 20s ] thds: 4 tps: 1141.69 qps: 22831.98 (r/w/o: 15982.65/4566.16/2283.18) lat (ms,95%): 6.09 err/s: 0.00 reconn/s: 0.00 SQL-Statistiken: Durchgeführte Abfragen: Lesen: 307146 # Anzahl der ausgeführten LesevorgängeSchreiben: 87756 # Anzahl der ausgeführten SchreibvorgängeSonstiges: 43878 # Anzahl der ausgeführten sonstigen VorgängeGesamt: 438780 Transaktionen: 21939 (1096,57 pro Sek.) # Durchschnittliche Rate der Abfragen zur Transaktionsausführung: 438780 (21931,37 pro Sek.) # Durchschnittliche Anzahl der pro Sekunde ausgeführten Abfragen, ignorierte Fehler: 0 (0,00 pro Sek.) Wiederverbindungen: 0 (0,00 pro Sek.) Allgemeine Statistiken: Gesamtzeit: 20,0055 s # Gesamtzeitaufwand Gesamtzahl der Ereignisse: 21939 # Gesamtzahl der Anfragen (Lesen, Schreiben, Sonstiges) Latenz (ms): Mindestens: 1,39 Durchschnitt: 3,64 max: 192,05 95. Perzentil: 6,67 # Durchschnittliche Latenzzeit berechnet durch Stichprobensumme: 79964,26 Fairness der Themen: Ereignisse (Durchschnitt/Standardabweichung): 5484,7500/15,12 Ausführungszeit (Durchschnitt/Standardabweichung): 19,9911/0,00 4. CPU/IO/Speicher und andere Tests Einige in Sysbench integrierte Testindikatoren sind die folgenden: [root@mysql ~]# sysbench --help .......... # Einige Inhalte weglassen Einkompilierte Tests: fileio - Datei-E/A-Test cpu - CPU-Leistungstest Speicher - Geschwindigkeitstest der Speicherfunktionen Threads - Leistungstest des Thread-Subsystems mutex - Mutex-Leistungstest Sie können Testmethoden direkt ausgeben lassen, zum Beispiel Fileio-Test: [root@mysql ~]# sysbench fileio Hilfe sysbench 1.0.17 (unter Verwendung des Systems LuaJIT 2.0.4) Fileio-Optionen: --file-num=N Anzahl der zu erstellenden Dateien [128] --file-block-size=N Blockgröße, die bei allen IO-Operationen verwendet werden soll [16384] --file-total-size=SIZE Gesamtgröße der zu erstellenden Dateien [2G] --file-test-mode=STRING Testmodus {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw} --file-io-mode=STRING Dateioperationsmodus {sync,async,mmap} [sync] --file-async-backlog=N Anzahl der asynchronen Operationen zur Warteschlange pro Thread [128] --file-extra-flags=[LIST,...] Liste zusätzlicher Flags, die zum Öffnen von Dateien verwendet werden sollen {sync,dsync,direct} [] --file-fsync-freq=N führe fsync() nach dieser Anzahl von Anfragen aus (0 - verwende fsync() nicht) [100] --file-fsync-all[=on|off] führe fsync() nach jedem Schreibvorgang aus [aus] --file-fsync-end[=on|off] führe fsync() am Ende des Tests aus [on] --file-fsync-mode=STRING welche Methode zur Synchronisierung verwendet werden soll {fsync, fdatasync} [fsync] --file-merged-requests=N höchstens diese Anzahl an IO-Anfragen zusammenführen wenn möglich (0 - nicht zusammenführen) [0] --file-rw-ratio=N Lese-/Schreibverhältnis für kombinierten Test [1.5] 1) Testen Sie die io-Leistung Erstellen Sie beispielsweise 5 Dateien mit einer Gesamtgröße von 2 GB, wobei jede Datei etwa 400 MB groß ist. [root@mysql ~]# sysbench fileio --file-num=5 --file-total-size=2G vorbereiten [root@mysql ~]# ll -lh test* -rw------ 1 root root 410M 26. Mai 16:05 test_file.0 -rw------ 1 root root 410M 26. Mai 16:05 test_file.1 -rw------ 1 root root 410M 26. Mai 16:05 test_file.2 -rw------ 1 root root 410M 26. Mai 16:05 test_file.3 -rw------ 1 root root 410M 26. Mai 16:05 test_file.4 Führen Sie dann den Test aus: [root@mysql ~]# sysbench --events=5000 --threads=16 Datei --file-num=5 --file-total-size=2G --file-test-mode=rndrw --file-fsync-freq=0 --file-block-size=16384 laufen Die zurückgegebenen Ergebnisse lauten wie folgt: Ausführen des Tests mit folgenden Optionen: Anzahl der Threads: 16 Initialisierung des Zufallszahlengenerators ab aktueller Zeit Zusätzliche Flags zum Öffnen von Dateien: (keine) 5 Dateien, jeweils 409,6 MiB 2 GiB Gesamtdateigröße Blockgröße 16KiB Anzahl der IO-Anfragen: 5000 Lese-/Schreibverhältnis für kombinierten Random-IO-Test: 1,50 Aufruf von fsync() am Ende des Tests, Aktiviert. Verwenden des synchronen E/A-Modus Durchführen eines zufälligen Lese-/Schreibtests Arbeitsthreads werden initialisiert … Themen gestartet! Dateioperationen: liest/s: 9899.03 Schreibungen: 6621.38 Anzahl der Synchronisationen/s: 264,33 Durchsatz: # Durchsatz beim Lesen, MiB/s: 154,66 # Gibt die Bandbreite beim Lesen an, geschrieben, MiB/s: 103,46 # Gibt die Bandbreite beim Schreiben an Allgemeine Statistiken: Gesamtzeit: 0,3014 s Gesamtzahl der Veranstaltungen: 5000 Latenz (ms): min: 0.00 Durchschnitt: 0,81 max: 53,56 95. Perzentil: 4,10 Summe: 4030,48 Fairness der Themen: Ereignisse (Durchschnitt/Standardabweichung): 312,5000/27,64 Ausführungszeit (Durchschnitt/Standardabweichung): 0,2519/0,02 2) Testen Sie die CPU-Leistung [root@mysql ~]# sysbench cpu --threads=40 --events=10000 --cpu-max-prime=20000 ausführen Bitte seien Sie bei der Durchführung von Stresstests vorsichtig! ! ! ! Oben finden Sie ausführliche Informationen zur Verwendung des MySQL-Stresstesttools Mysqlslap. Weitere Informationen zur Verwendung von Mysqlslap finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der KeepAlive-Verwendung in der Vue-Frontend-Entwicklung
Überblick Heute werden wir hauptsächlich erläuter...
Inhaltsverzeichnis 1. Was ist Lazy Loading von Ro...
In diesem Artikel wird der spezifische Code für V...
Zwei Hauptkategorien von Indizes Verwendete Speic...
Inhaltsverzeichnis 1. Vorverarbeitung 2. Zusammen...
Bei der Verwendung von MySQL werden Daten im Allg...
Inhaltsverzeichnis Legen Sie beim Erstellen einer...
Inhaltsverzeichnis Alle Speicher-Engines anzeigen...
Inhaltsverzeichnis 1. Übersicht der Seite 2. Infi...
Inhaltsverzeichnis 1. Das einfachste Beispiel 2. ...
Inhaltsverzeichnis 1. Anti-Shake-Funktion 2. Verw...
Einfache Beschreibung Da es zuvor mit Centos7 ers...
1. Einführung in Komprimierung und Verpackung All...
Die JSON-Daten müssen im HTML-Format zurückgegeben...
Um eine Zeichenfolge zu ersetzen, müssen wir das ...