Was verwenden Sie als MySQL Server für Magento?
- MySQL (Oracle)
- Percona
- andere (MariaDB)
Percona bietet eine Reihe von Verbesserungen für den InnoDB-Speicher, die von Magento intensiv genutzt werden. Diese Verbesserungen machen jedoch einen Unterschied, wenn ein Magento-Speicher ausgeführt wird.
Wie können Sie die Leistung verbessern (allgemeine Ansätze zur Architektur, keine spezifischen Informationen zum Festlegen bestimmter Variablen innodb_flush_log_at_trx_commit=2
usw.)? Ich kenne NBS versuchte Master-Master-Replikation, aber das ist nicht stabil.
Bei einer Master-Slave-Replikation mit Lesevorgängen, die an den Slave weitergeleitet wurden, sind einige Probleme aufgetreten, da es bei der Replikation von Daten zu Verzögerungen gekommen ist.
So viel wie möglich aus MySQL herausziehen? (suche nach solr und so weiter).
quelle
Antworten:
Sie tauchen hier in eine weite Welt der Optimierung ein, und es gibt mit Sicherheit keinen einheitlichen Ansatz.
Leistung definieren
Meinen Sie die Ladezeit der Seite für einen einzelnen Benutzer oder die Gesamtkapazität / Gesamt-Parallelität? Die beiden sind sehr unterschiedlich - und nicht eng miteinander verbunden. Es ist durchaus möglich, ein schnelles Geschäft mit begrenzter Kapazität zu haben. oder ein langsamer Laden mit viel Kapazität.
Wenn Sie sich also an einen der beiden Leistungstypen wenden:
Sie müssen sich unabhängig voneinander mit ihren eigenen Lösungen auseinandersetzen - zumal jede ihre eigenen Engpässe hat.
Nehmen wir an, Sie haben einen kompetenten Host, der die anderen Aspekte Ihres Servers bereits optimal für Ihr Geschäft konfiguriert hat.
Vom einzelnen Benutzer wahrgenommene Ladezeit der Seite
Ist MySQL der Engpass
Nr. Nicht direkt. Beim Testen der Ladezeit einer Seite dreht sich in den meisten Fällen alles um die Latenz - nur die Caches werden getroffen. Hier geht es also darum, die Latenz zu minimieren.
Diese Änderungen wirken sich jedoch nur geringfügig auf die Ladezeit der Seite aus - wo der Engpass wirklich woanders liegt.
Die Anwendung ist der Engpass. Nicht die Software. Die bloße Verbesserung des Kerncodes oder das Verringern des Umfangs Ihrer Vorlage hat weitaus dramatischere Auswirkungen auf die Leistung als jede Änderung der MySQL-Konfiguration.
Womit würden wir uns nicht befassen?
s1 Nur für separate Datenbankserver. Gilt nicht für lokale DB-Server.
Gesamtkapazität / Nebenläufigkeit
Ist MySQL der Engpass
? Aber erst wenn Sie Ihre PHP-Leistung und -Kapazität auf einen Punkt gebracht haben, an dem MySQL die Dinge verlangsamt. Wenn Sie Varnish und FPC richtig konfiguriert haben (lassen Sie uns nicht wissen, wie viele Fehlversuche wir mit beiden gesehen haben), wird MySQL zu einem Engpass.
Also zusätzlich zu den obigen Modifikationen.
Womit würden wir uns nicht befassen?
Skalierbarkeit von Lesen und Schreiben
Der letzte Absatz führt zu einem wichtigen Bereich der Lese- und Schreibskalierbarkeit. Die Skalierung der Lesevorgänge kann ohne großen Aufwand mit der Hinzufügung von immer mehr Slaves ziemlich unbegrenzt durchgeführt werden.
In Anbetracht der Tatsache, dass Magento ein Verhältnis von Lese- zu Schreibvorgängen von etwa 0,1% aufweist, sollten Schreibvorgänge kein großes Problem darstellen. Aus diesem Grund habe ich mich nicht mit MySQL Cluster und seinen cleveren Funktionen wie dem automatischen Sharding (Aufteilen von Tabellen auf separate Maschinen) befasst.
Hardware, Hardware, Hardware
Hardware ist mit Sicherheit die schnellste Antwort, wenn es um Verbesserungen geht. Daher habe ich sie in beiden Szenarien bewusst nicht erwähnt.
Aber alle Software-Änderungen auf der Welt werden keinen Unterschied machen, wenn Ihre zugrunde liegende Hardware nicht ausreicht. Das könnte bedeuten ...
Heutzutage gibt es eine sehr hohe Obergrenze dafür, wie hoch Sie tatsächlich auf Hardware skalieren können. Ignorieren wir den Mythos der unendlichen Skalierung "in der Cloud", da Cloud-Hardware eher mittelmäßig ist. Zum Beispiel sind die Flaggschiff-Modelle von Amazon nur 12 Kerne bei 3,3 GHz. Abgesehen davon sind einige sehr leistungsstarke Server verfügbar - unser Top-Server verfügt über 160 Kerne und 2 TB (ja, Terabyte) RAM. Wir haben noch niemanden gesehen, der diese Möglichkeiten übertrifft.
Sie haben also einen enormen Spielraum für die vertikale Skalierung, bevor Sie überhaupt die horizontale Skalierung in Betracht ziehen müssen.
Das sich ständig bewegende Ziel
Erwähnenswert ist, dass bei der Suche nach Leistung der Engpass immer in Bewegung bleibt.
Für einen Lager Magento Store.
Schalten Sie die Caches ein. PHP ist der Engpass
Fügen Sie einen Backend-Cache hinzu. PHP ist der Engpass
Fügen Sie einen Ganzseiten-Cache auf Anwendungsebene hinzu. PHP ist der Engpass
Fügen Sie einen Front-End-Cache auf Serverebene hinzu (z. B. Lack). MySQL ist der Engpass.
Fügen Sie eine alternative Such- / Ebenen-Navigationsmaschine hinzu (z. B. SOLR / Sphinx). PHP ist der Engpass.
Fügen Sie weitere Anwendungsserver hinzu. MySQL ist der Engpass
Fügen Sie einen MySQL-Slave hinzu. Front-End-Cache ist der Engpass.
Fügen Sie weitere Front-End-Cache-Server hinzu. PHP ist der Engpass.
Fügen Sie weitere Anwendungsserver hinzu. SOLR / Sphinx ist der Engpass
Und so weiter.
Es wird so ziemlich ein Fall von Spül-Wasch-Wiederholung. Es ist jedoch klar, dass MySQL sicherlich nicht die erste Anlaufstelle für Optimierungen ist - und tatsächlich nur dann zum Tragen kommt, wenn MySQL proportional zu PHP mehr CPU verbraucht - und dies NUR dann, wenn sowohl FPC als auch Varnish verwendet werden und die Server verarbeiten nur Bestellungen und nicht viel anderes (weil sich alles andere in Caches befindet).
Nehmen Sie keine Änderungen blind vor
Wenn Sie einfach einen MySQL-Slave hinzufügen, weil Sie oben lesen, dass dies helfen wird, können Sie Leistung und Zuverlässigkeit auf einer riesigen Ebene kosten. Ein überlastetes Netzwerk, ein Slave-Server mit niedrigen Spezifikationen oder sogar falsche Einstellungen können Replikationsprobleme verursachen, die Ihren Shop langsamer machen als ursprünglich - oder Synchronisierungsprobleme zwischen Master und Slave verursachen.
Um die Dinge ins rechte Licht zu rücken - einige Beispiele aus der Praxis.
Beispiel 1 - 300 Bestellungen pro Stunde
Wir haben die folgende Hardware verwendet, um 300 Bestellungen pro Stunde zu bearbeiten. Und erst zu diesem Zeitpunkt mussten wir einen dedizierten MySQL-Server und einen lokalen MySQL-Slave hinzufügen.
1 Server
CPU: 2x Intel E5-4620
RAM: 64 GB Festplatte: 4x 80 k IOP / s SSDs
RAID: Hardware-RAID 10
Magento-Version: Magento EE
Betriebssystem: MageStack
Während der gesamten Zeit blieben die Durchschnittswerte der Ladung unter 3,00.
Beispiel 2 - 180 Bestellungen pro Stunde
Erst vor zwei Tagen hat ein neuer Kunde von uns leicht einen großen Verkehrsanstieg verzeichnet. Verarbeitung von 180 Bestellungen pro Stunde mit einem einzelnen Server und Magento Community Edition .
1 Server-
CPU: 2x Intel E5-4620
RAM: 64 GB Festplatte: 4x 80 k IOP / s SSDs
RAID: Hardware RAID 10
Magento Version: Magento CE
Betriebssystem: MageStack
Website: Wellgosh.com
Während der gesamten Zeit blieben die Durchschnittswerte der Ladung unter 6,00. Die Last war in diesem Szenario höher und das war auf einige Faktoren zurückzuführen.
In Anbetracht der Aktualität haben wir immer noch die detaillierten Statistiken, um mithilfe von Diagrammen Feedback zu geben. Diese enthalten eine hervorragende Darstellung der Lastverteilung auf die Hauptkomponenten einer separaten Magento-Architektur (Load Balancer, Webserver, Datenbankserver usw.) unter Verwendung von MageStack ).
Also von vorne nach hinten ... das Datum, das Sie sich ansehen möchten, ist am 22. Februar um 12:00 Uhr.
Firewall-Pakete
Lack Verkehr
Nginx Verkehr
MySQL laden
CPU-Auslastung
Und vor allem Lastverteilung
Dieses Bild sagt wirklich alles. Und es ist, dass MySQL sicherlich keine Last ist - zumindest noch nicht. Konzentrieren Sie sich daher in unserem Rat auf Ihre Leistungsanliegen, es sei denn, Sie bearbeiten mehr als ein paar tausend Bestellungen pro Stunde.
Und zusammenfassend
Leistungsänderungen sind nicht "one size fits all". Es geht darum, Ihre aktuellen Engpässe zu analysieren und subtile Änderungen / Anpassungen vorzunehmen, um sie an Ihr Geschäft und Ihre Infrastruktur anzupassen.
Abgesehen von der Leistung bietet Percona noch weitere Vorteile
Wir verwenden fast ausschließlich Percona XtraDB. Wir führen kundenspezifisch kompilierte MySQL-Builds aus, die wir speziell für Magento entwickelt haben und die Percona während des Prozesses zu Rate gezogen haben. Aber es war nicht nur die Leistung, die diese Wahl beeinflusste.
Und vieles mehr. Die Verwendung gegenüber MySQL hatte also andere Vorteile als nur die Leistung. Tatsächlich war und ist MySQL das am wenigsten von uns betroffene Unternehmen bei der Suche nach Leistung und Stabilität.
Zuweisungen : wellgosh.com , sonassi.com , iebmedia.com .
quelle