„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie MySQL-Tuning die Laravel-Leistung verbessert

Wie MySQL-Tuning die Laravel-Leistung verbessert

Veröffentlicht am 30.07.2024
Durchsuche:830

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, Speicher, 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 Möglichkeit, 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 optimierte Konfiguration vergleichen können.

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

  1. Laravel Aimeos einsetzen.
  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 Testen der Standardkonfiguration blieb unser Setup gleich, MariaDB wurde jedoch auf Arbeitslast, Serverressourcen und Datenbankgröße abgestimmt.
  6. Test erneut ausführen – Der JMeter-Test wurde mit Blazemeter für die optimierte 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 die Messwerte CPU-Auslastung und Abfragen pro Sekunde erfasst, 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 verwendeten:

  • 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

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 Anfragen pro Sekunde um unglaubliche 291 % stiegen 12 bis 35 Abfragen pro Sekunde.

Die Grafik der Ergebnisse ist unten verfügbar:

How MySQL Tuning Improves the Laravel PerformanceAntwortzeit (ms), von Aimeos optimierte MySQL-Konfiguration im Vergleich zur Standardkonfiguration
How MySQL Tuning Improves the Laravel PerformanceCPU-Auslastung (%), von Aimeos optimierte MySQL-Konfiguration im Vergleich zur Standardkonfiguration
How MySQL Tuning Improves the Laravel PerformanceAbfragen 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 ihre Expertise.

Sergey stellte Aimeos bereit und Gevorg bereitete Code für das Seeding der Datenbank vor.

Abschluss

Unser Testverfahren mit Aimeos Laravel zeigte nach der Konfiguration der Datenbank dramatische Verbesserungen bei

Antwortzeit (Latenz), CPU-Auslastung und Abfragen pro Sekunde. Serverkonfiguration.

Reaktionszeit (Latenz) sank um 42 %, während 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 Umsätze, Seitenaufrufe, Konversionsraten und SEO-Rankings steigern.

Wir hoffen, mit dieser Untersuchung 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 optimale Leistung konfiguriert werden, wodurch die Belastung für Softwareentwicklungsteams verringert wird.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel-performance-282j?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3