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 #Maximale Anzahl an Verbindungen anzeigenmysql> Variablen wie „max_connections“ anzeigen; +-----------------+--------+ | Variablenname | Wert | +-----------------+--------+ | max_Verbindungen | 1024 | +-----------------+--------+ 1 Zeile im Satz (0,00 Sek.) So führen Sie einen Stresstest durch:
Die obige Befehlstestbeschreibung: simuliert zwei Lese- und Schreib-Parallelitätstests, das erste Mal ist 100, das zweite Mal ist 200, generiert automatisch SQL-Skripte, die Testtabelle enthält 20 Init-Felder, 30 Der obige Befehl gibt die folgenden Ergebnisse zurück: Beschreibung der Testergebnisse: Myisam benötigt beim ersten Mal 0,557/s, wenn 100 Clients gleichzeitig eine zusätzliche Abfrage initiieren, und beim zweiten Mal 0,522/s, wenn 200 Clients gleichzeitig eine zusätzliche Abfrage initiieren. Innodb benötigt beim ersten Mal 0,256/s, wenn 100 Clients gleichzeitig eine zusätzliche Abfrage initiieren, und beim zweiten Mal 0,303/s, wenn 200 Clients gleichzeitig eine zusätzliche Abfrage initiieren. 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:
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 Die 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] Hilfeinformationen 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: # Integrierter Datenbanktreiber, unterstützt standardmäßig MySQL und PostgreSQL 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 #Sie müssen die sbtest-Bibliothek erstellen. Dies 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 \ > Dateiio \ > --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 Dies ist das Ende dieses Artikels über die Verwendung des MySQL-Stresstest-Tools. Weitere Informationen zu MySQL-Stresstest-Tools finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Skin-Change-Lösung basierend auf Vue kombiniert mit ElementUI
Inhaltsverzeichnis Was ist JSI Was ist anders an ...
1. Konventionelles Schreiben in vue2 // Die überg...
#docker ps-Check, alle Ports sind zugeordnet CONT...
1. Passwort ändern 1. Ändern Sie das Passwort nor...
Ich habe mich schon immer für drahtlose Interakti...
1. Linux-Installation (Root-Benutzerbetrieb) 1. I...
Inhaltsverzeichnis 1. Vorbereitung 2. Einführung ...
Konzepteinführung : 1. px (Pixel): Dies ist eine ...
Vorwort Wenn Sie jemand fragt: „Was sind die Merk...
Nachfrage: Diese Nachfrage ist ein dringender Bed...
Inhaltsverzeichnis Frage 1. Installieren Sie webp...
Erstellen einer Datenbank Rechtsklick - Neue Date...
Indem ich die verschiedenen Probleme, auf die ich...
Manchmal erfordert die lokale Entwicklung das Deb...
Inhaltsverzeichnis 1. So überwachen Sie Tomcat 2....