Ich sehe derzeit, dass für eine Datenbanktabelle mit einem sehr einfachen Schema (ungefähr 5 Felder) neue Datensätze mit einer Rate von knapp 50 Einfügungen / Sekunde in meiner lokalen Entwicklungsumgebung (SSD-Laufwerk) eingefügt werden - dies ist mit Keine Beobachter im Modell, die zugeordnete Tabellen ausfüllen.
Mit Direct SQL sehe ich eine ziemliche Verbesserung - ~ 1800 Inserts / Sekunde. Wir denken darüber nach, die Leistung unserer Modelle zu optimieren, aber wir möchten natürlich nicht die schöne Stabilität und Flexibilität verlieren, die uns der Magento-Kern bietet.
Ich frage mich, ob jemand diesen Weg schon einmal gegangen ist und ob es einige einfache Erfolge in Bezug auf Komponenten der Modellebene gibt, die relativ sicher umgangen werden können, was zu erheblichen Leistungssteigerungen führt.
Dinge wie:
- Klassennamenauflösung
- vor und nach dem Speichern von Ereignissen
- Ereignismeldungen
- Transaktionen
- etc.
UPDATE: Ich habe gelogen, es gab tatsächlich einige zusätzliche Abfragen von Beobachtern oder afterSave (), die ich gesehen habe, als ich das Datenbank-Abfrageprotokoll inspiziert habe. Das Benchmarking mit einer ganz einfachen Entität ergibt bei Magento-Modellen ungefähr 300 Zeilen pro Sekunde - nur MySQL-Overhead ist eine Transaktion.
quelle
Antworten:
Eine Sache, die die gesamte Site beschleunigen kann, besteht darin, alle Verweise
Varien_Profiler
auf Ihre Produktionssite zu entfernen . Auch wenn der Profiler deaktiviert ist, prüft er immer, ob er aktiviert ist, sodass jeder Aufruf von zuVarien_Profiler::
einer zusätzlichenif
Anweisung führt. Das Entfernen all dieser Anrufe hat natürlich zur Folge, dass der Profiler nicht mehr verwendet werden kann. Dies kann jedoch die gesamte Site um etwa 5% beschleunigen (dies ist eine subjektive Erfahrung, aber es gibt VIELE Anrufe inVarien_Profiler
ganz Magento). Ich habe tatsächlich ein kleines Shell-Skript geschrieben, um diese Aufrufe in allen Dateien automatisch zu kommentieren, und ich werde dies morgen zu meinem Beitrag hinzufügen, wenn ich bei der Arbeit bin und meinen Code bereit habe.Wie versprochen nun den Code um diese Aufrufe auszukommentieren:
Dies sollte in der Linux-Konsole sowohl in der App / als auch in der lib / -Ordner ausgeführt werden. Möglicherweise müssen Sie die Datei /lib/Varien/Profiler.php anschließend manuell anpassen. Beachte auch, dass du dies gründlich in einer sicheren Umgebung testen solltest, bevor du es live nimmst - aber ich denke, das sollte offensichtlich sein;)
quelle
find . -type f -exec grep -qF 'Varien_Profiler' {} \; -exec sed -i '/Varien_Profiler/d' {} \;
wenn Sie einen schnellen Oneliner bevorzugen.Wenn Sie viele Speichervorgänge mit Magento-Modellen ausführen, deaktivieren Sie am besten den Magento-Indexer, der den Vorgang verlangsamt:
Und aktivieren Sie es, wenn Sie fertig sind:
quelle