Ich habe ein Leistungsproblem mit Magento 2.1
In meinem Shop habe ich 90.000 Produkte. Ich habe diese Produkte Seife hinzugefügt. Als ich dies tat, dauerte es ungefähr 7 Sekunden für jeden Artikel (Produkt?) (Anfrage> Antwort). Zusammenfassend kann gesagt werden, dass es einige Tage gedauert hat, bis alle Produkte in Betrieb genommen wurden.
Jetzt sind alle Produkte im Shop. Alle paar Wochen muss ich einige Dinge über die Artikel (Produkte) aktualisieren. Wenn ich das wieder mit Seife mache, dauert es genauso lange. Wenn ich Updates mache, ist der Shop unbrauchbar. Eine beispielhafte Anfrage und Antwort finden Sie hier: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz
Mein Server verfügt über eine 12-Kern-CPU, 24 GB RAM und eine SSD. Es läuft Ubuntu 16.04 mit Apache2 PHP7-fpm und MySQL.
Wenn ich mir den Update-Prozess ansehe, sehe ich, dass 5 Kerne mit MySQL zu 100% laufen. PHP funktioniert ein bisschen und der Rest ist inaktiv. Der RAM ist nur eine kleine Menge verwendet, iotop
sagt, dass meine SSD sich langweilt.
Ich habe die Datenbankleistung beobachtet und festgestellt, dass Magento beim Hinzufügen tausender Befehle zur Datenbank ausgelöst hat. Ist das ok?
Wenn ich es mit dem Magento CSV-Import aktualisiere, ist es viel schneller.
Was kann ich tun, um Magento2 zu beschleunigen? In dieser Situation ist es unmöglich, mit diesem Geschäft gut zu arbeiten.
quelle
Antworten:
Massenimport
Der Schlüssel ist der Batch-Import, wie Sie selbst erwähnt haben:
Überlegen Sie, ob Sie Ihre SOAP-API überdenken und in einen Massenmodus ändern möchten. Sie können beispielsweise eine Middleware erstellen, die Ihre Produktdaten akzeptiert, und eine CSV-Datei erstellen, die später in Magento eingespeist werden kann.
Es gibt einige Erweiterungen von Drittanbietern, die dabei helfen.
Allgemeine Leistungsempfehlung
Sie können versuchen, Magento selbst zu beschleunigen, aber Sie erhalten von jeder Verbesserung ~ 1-10% Boost. Wenn Sie mehrere davon ausführen, wird der Vorteil vervielfacht:
Wenn all das erledigt ist und Sie mehr Leistung benötigen:
quelle
Das Problem hierbei ist, dass die SOAP-Aufrufe sehr teuer sind. Wenn Sie eine SOAP-Anfrage starten, um ein Produkt hinzuzufügen, zu bearbeiten oder zu löschen, muss Magento viele Tabellen verknüpfen, um alle erforderlichen Informationen zu erhalten. Dieses Verhalten in Kombination mit PHP selbst verlangsamt die Anzahl der zu verarbeitenden Produkte oder Daten.
Magento selbst empfiehlt einen Server-Cluster mit 5 Knoten (1 x DB, 4 x Webserver), um den Datenverkehr zu verarbeiten.
Ich würde empfehlen, horizontal zu skalieren, zum Beispiel mit AWS. Dies könnte größere Auswirkungen auf Ihr Unternehmen haben, aber IMHO können Sie Magento nicht optimieren, um eine bessere Leistung zu erzielen.
In AWS sollten Sie die Funktion einer Autoscaling-Gruppe verwenden, die für die Anzahl der von Ihnen gestarteten Server verantwortlich ist. Jedes Mal, wenn Sie die Daten hinzufügen, werden neue Server gestartet, um den Druck zu bewältigen. Gleiches kann mit AWS RDS (DB Service) sehr einfach und schnell erledigt werden.
Falls AWS überhaupt keine Option ist, können Sie versuchen, Magento und PHP zu optimieren. Ich würde empfehlen, die Einstellungen zu überprüfen für:
quelle
Dieser Link erklärt, wie Sie die MySQL-Speichernutzung optimieren. Da Sie so viel RAM haben, können Sie davon profitieren, MySQL mehr zuzuweisen. Dies ist möglicherweise eine einfachere und kostengünstigere Lösung zum Aufbau eines dedizierten Datenbankservers.
Außerdem kann das MySQL Workbench-Dienstprogramm hilfreich sein, um Sie bei dieser Optimierung und Überwachung der allgemeinen Funktionsweise von MySQL zu unterstützen. Das Dienstprogramm wird von Oracle / MySQL erstellt. Es ist keine zufällige Shareware-App.
quelle