Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie MySQL-Tuning die Laravel-Leistung verbessert

WBOY
Freigeben: 2024-07-29 20:33:03
Original
545 Leute haben es durchsucht

Die Optimierung der MySQL-Konfiguration ist eine wichtige Komponente der Datenbankverwaltung, die von Datenbankexperten und -administratoren implementiert wird. Ziel ist es, die Datenbank passend zu ihrer Hardware und Arbeitslast zu konfigurieren. Aber über den Bereich der Datenbankverwaltung hinaus wird der Nutzen der MySQL-Konfigurationsoptimierung weitgehend ignoriert.

Wir gehen davon aus, dass MySQL-Optimierung die Leistung von Web-Apps erheblich beeinflussen kann. Wenn wir den Wert der MySQL-Optimierung aufzeigen können, glauben wir, dass Unternehmen und Organisationen daran interessiert sein könnten, diese Praxis in größerem Umfang zu integrieren.

So verbessern Sie die Leistung von Laravel-Anwendungen

Eine Verbesserung der Anwendungsleistung durch Optimierung lässt sich am besten mit einem umfassenden Ansatz erreichen, der die folgenden Bereiche anspricht:

  • Serverressourcen – CPU, Arbeitsspeicher, Speicher
  • Softwarekonfigurationen – Linux, Nginx, PHP…
  • Datenbankverwaltungssystem (DBMS)-Konfigurationen – MySQL, PostgreSQL
  • Datenbankschema optimieren und Indizes ändern
  • Anwendungen optimieren – Code, Abfragen, Architektur …

Viele erfahrene Entwickler betrachten die Optimierung der Datenbankleistung nicht als Chance, die Leistung ihrer Apps zu verbessern, da sie wenig über diesen Bereich wissen. Sie verbringen viel Zeit damit, die Codebasis zu optimieren, aber es erreicht einen Punkt, an dem es für die investierte Zeit und Energie kein wertvolles Ergebnis mehr bringt. Unsere Forschung darüber, wie sich MySQL-Optimierung positiv auf die Leistung beliebter Open-Source-Webanwendungen auswirkt, zielt darauf ab, Entwicklern diese Tatsache vor Augen zu führen.

Testansatz

Mit unserem Testverfahren für Laravel Aimeos können wir die Leistung der App vor und nach der Konfiguration anhand von Seed-Daten vergleichen. Indem wir den Test zuerst mit der Standardkonfiguration ausführen, erhalten wir wertvolle Kontrollergebnisse, mit denen wir die abgestimmte Konfiguration vergleichen können.

Wir haben den folgenden Prozess verwendet, um jede Anwendung vorzubereiten und zu testen:

  1. Laravel Aimeos bereitstellen.
  2. Seed-Datenbank mit Daten.
  3. Test für JMeter vorbereiten.
  4. Test 10 Minuten lang ausführen – JMeter-Test mit der Blazemeter-Leistungstestplattform durchgeführt.
  5. MariaDB-Konfiguration optimieren – Nach dem Standardkonfigurationstest blieb unser Setup gleich, MariaDB wurde jedoch hinsichtlich Arbeitslast, Serverressourcen und Datenbankgröße optimiert.
  6. Test erneut ausführen – Der JMeter-Test wurde mit Blazemeter für die abgestimmte Konfiguration wiederholt.

Wir haben JMeter-Tests, MySQL-Status und MySQL-Variablen während der Tests auf Github veröffentlicht.

Welche Kennzahlen haben wir uns angesehen?

Die Kennzahlen, die wir uns während dieser Untersuchung angesehen haben, sind:

  1. Antwortzeit (Latenz) ist die Zeit zwischen dem Senden der Anfrage und ihrer Verarbeitung auf der Serverseite bis zu dem Zeitpunkt, an dem der Client das erste Byte empfängt. Es ist die wichtige Kennzahl, die Ihnen Einblick in die Serverleistung gibt.
  2. Abfragen pro Sekunde ist eine Metrik, die misst, wie viele Abfragen der Datenbankserver pro Sekunde ausführt.
  3. CPU-Auslastung.

Wir haben Metriken zur CPU-Auslastung und Abfragen pro Sekunde gesammelt, um die Arbeitslast zu vergleichen.

Laravel Aimeos

Aimeos Laravel ist ein beliebtes E-Commerce-Web-App-Framework zum Erstellen von Online-Shops, Marktplätzen und B2B-Apps. Mit Aimeos können Benutzer API-First-E-Commerce-Shops für Laravel erstellen, die so skaliert werden können, dass sie über 1 Milliarde Artikel unterstützen. Es ist in über 30 Sprachen verfügbar und hat über 300.000 Installationen.

Testaufbau

Um Aimeos zu testen, haben wir den Test mit zehn Benutzern begonnen, mussten jedoch die Anzahl der Benutzer verringern, da wir den Test mit der Standardkonfiguration nicht abschließen konnten.

Wir haben die Datenbank mit 500 MB Daten gefüllt.
Unsere Testdauer betrug 10 Minuten.

Wir haben verwendet:

  • AWS EC2-Instanz c5.xlarge mit installiertem Debian 11 als Betriebssystem,
  • Apache als Webserver,
  • MariaDB 10.5 ist auf die Standardkonfiguration mit einer Datenbankgröße von 500 MB eingestellt.

MySQL-Konfiguration

Die für Aimeos Laravel verwendete Konfiguration ist wie folgt:

Abgestimmte Konfiguration für Laravel Aimeos 500 MB

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2
Nach dem Login kopieren

Testergebnisse

Die Testergebnisse von Aimeos Laravel zeigten dramatische Leistungsverbesserungen zwischen der Standardkonfiguration und der optimierten Konfiguration.

Die Optimierung von MySQL führte zu einer deutlichen Verbesserung der durchschnittlichen Server-Antwortzeit, die von 1,4 Sekunden auf unter 800 Millisekunden reduziert wurde

Antwortzeit (Latenz) sank um 42 % und die durchschnittliche CPU-Auslastung um 86 %, während Abfragen pro Sekunde um unglaubliche 291 % zunahmen 12 bis 35 Abfragen pro Sekunde.

Die Grafik der Ergebnisse ist unten verfügbar:

How MySQL Tuning Improves the Laravel Performance Reaktionszeit (ms), von Aimeos optimierte MySQL-Konfiguration im Vergleich zur Standardkonfiguration
How MySQL Tuning Improves the Laravel Performance CPU-Auslastung (%), von Aimeos optimierte MySQL-Konfiguration im Vergleich zur Standardkonfiguration
How MySQL Tuning Improves the Laravel Performance Abfragen pro Sekunde, von Aimeos optimierte MySQL-Konfiguration im Vergleich zur Standardkonfiguration

Community-Mitwirkende

Wir haben uns mit den Laravel-Entwicklern Gevorg Mkrtchyan und Sergey Sinitsa von der Firma Initlab zusammengetan, um diese Fragestellung zu untersuchen, und sind sehr dankbar für ihr Fachwissen.
Sergey stellte Aimeos bereit und Gevorg bereitete den Code für das Seeding der Datenbank vor.

Abschluss

Unser Testverfahren mit Aimeos Laravel zeigte nach der Konfiguration der Datenbank dramatische Verbesserungen bei Reaktionszeit (Latenz), CPU-Auslastung und Abfragen pro Sekunde Serverkonfiguration.

Die

Reaktionszeit (Latenz) sank um 42 %, während die CPU-Auslastung um 86 % sank. Anfragen pro Sekunde stiegen in Aimeos Laravel 500 MB um 291 %.

Zusammenfassend lässt sich sagen, dass MySQL-Tuning ein wesentlicher Aspekt der Datenbankverwaltung ist, der erhebliche Auswirkungen auf die Leistung von Laravel-Anwendungen haben kann. Schlecht funktionierende Webanwendungen können zu längeren Seitenladezeiten, langsamer Bearbeitung von Anfragen und einer schlechten Benutzererfahrung führen, was sich negativ auf SEO und Verkäufe auswirken kann. Durch die Optimierung der Leistung von Web-Apps mit MySQL-Tuning können Unternehmen und Organisationen Verkäufe, Seitenaufrufe, Konversionsraten und SEO-Rankings steigern.

Mit dieser Untersuchung hoffen wir, den Wert der MySQL-Optimierung als Mittel zur Verbesserung der Leistung von Laravel-Anwendungen aufzuzeigen und Laravel-Entwickler zu ermutigen, diese Vorgehensweise bei der Optimierung der Leistung ihrer Apps zu berücksichtigen.

Mit Tools wie Releem können Datenbanken automatisch für eine optimale Leistung konfiguriert werden, wodurch die Belastung der Softwareentwicklungsteams verringert wird.

Das obige ist der detaillierte Inhalt vonWie MySQL-Tuning die Laravel-Leistung verbessert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage