Ist Magento normalerweise so schrecklich langsam?
Dies ist meine erste Erfahrung damit und das Admin-Panel braucht nur Ewigkeiten, um Änderungen zu laden und zu speichern. Es ist eine Standardinstallation mit den Testdaten.
Der Server, auf dem er gehostet wird, bedient andere Nicht-Magento-Sites sehr schnell. Was macht den von Magento verwendeten PHP-Code so langsam und was kann getan werden, um ihn zu beheben?
php
magento
optimization
Herr Euro
quelle
quelle
Antworten:
Ich war nur tangential an der Optimierung von Magento für die Leistung beteiligt, aber hier sind einige Gründe, warum das System so langsam ist
Teile von Magento verwenden ein EAV-Datenbanksystem, das auf MySQL implementiert ist. Dies bedeutet, dass das Abfragen eines einzelnen "Dings" häufig das Abfragen mehrerer Zeilen bedeutet
Hinter den Kulissen gibt es viele Dinge (Anwendungskonfiguration, Systemkonfiguration, Layoutkonfiguration usw.), bei denen riesige XML-Bäume im Speicher erstellt und diese Bäume dann nach Informationen "abgefragt" werden. Dies erfordert sowohl Speicher (Speichern der Bäume) als auch CPU (Parsen der Bäume). Einige davon (insbesondere der Layoutbaum) sind riesig. Sofern das Caching nicht aktiviert ist, werden diese Bäume aus Dateien auf der Festplatte und bei jeder Anforderung erstellt .
Magento verwendet sein Konfigurationssystem, um das Überschreiben von Klassen zu ermöglichen. Dies ist eine leistungsstarke Funktion, die jedoch bedeutet, dass jedes Mal, wenn ein Modell, ein Helfer oder ein Controller instanziiert wird, zusätzliche PHP-Anweisungen ausgeführt werden müssen, um festzustellen, ob eine ursprüngliche Klassendatei oder eine überschriebene Klassendatei erforderlich ist. Das summiert sich.
Neben dem Layoutsystem umfasst das Vorlagensystem von Magento viel rekursives Rendern. Das summiert sich.
Im Allgemeinen hatten die Magento-Ingenieure in erster Linie die Aufgabe, ein möglichst flexibles, anpassbares System zu erstellen und sich später um die Leistung zu kümmern.
Das erste, was Sie tun können, um eine bessere Leistung sicherzustellen, ist das Aktivieren des Caching (System -> Cache-Verwaltung). Dies entlastet einige der CPU- / Festplattenblockierungen, die während des Aufbaus der verschiedenen XML-Bäume durch Magento auftreten.
Das zweite, was Sie tun möchten, ist sicherzustellen, dass Ihr Host- und Betriebsteam über Erfahrung in der Leistungsoptimierung von Magento verfügt. Wenn Sie sich auf den 7-Dollar / Monat-Plan verlassen, um Sie durchzuhalten, dann viel Glück damit.
quelle
Neben den Empfehlungen von Alan Storm zum Caching gibt es zwei Dinge, die Sie im Zusammenhang mit dem Caching besonders empfehlen sollten:
- Stellen Sie sicher, dass sich das Caching im Speicher befindet und nicht auf der Festplatte.
Ich kümmere mich um ein paar Magento-Installationen, und sobald Sie irgendeine Art von Last auf das System bekommen, beginnt memcached viel schneller zu arbeiten. Und es ist kinderleicht, es umzustellen (zumindest im Vergleich zu anderen Magento-Sachen!)
Ein guter Ausgangspunkt ist hier: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - aber wenn Sie memcached noch nicht verwendet haben, sollten Sie sich auch einige allgemeine Informationen dazu ansehen.
- Aktivieren Sie das Vorlagen- / Ansichts-Caching.
Dies ist ein guter Artikel: http://inchoo.net/ecommerce/magento/magento-block-caching/
Es gibt auch gute auf der Magento-Site (Google Magento Block Caching), aber es ist im Moment nicht verfügbar.
Um meine zwei Cent zum Block-Caching hinzuzufügen, würde ich empfehlen, dass Sie Ihre eigenen Blöcke in / app / code / local erstellen, die Kernblöcke erweitern und die Cache-Parameter definieren, sie xxx_Cache nennen und dann Ihr Layout aktualisieren, um stattdessen diese Blöcke zu verwenden der Kern. Auf diese Weise vermeiden Sie, dass Sie Ihre Änderungen verlieren oder das System beschädigen, wenn Sie Magento aktualisieren.
quelle
Wenn Sie es noch nicht gesehen haben, haben Magento und Rackspace gemeinsam ein Whitepaper zur Leistungsoptimierung von Magento erstellt. Es ist exzellent. https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/
--- bearbeiten ---
Eine weitere großartige Ressource, die neu verfügbar ist (Oktober 2011), ist: http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf
(Danke an Alan Storm in diesem Fall.)
quelle
Es gibt möglicherweise auch einen sehr nicht offensichtlichen Grund, warum Ihre Administrationsoberfläche sehr langsam ist. Magento hat ein Modul namens Mage_AdminNotification. Versuchen Sie, diese ext zu deaktivieren. Denn was es tut, ist magentocommerce.com nach neuen Update-Nachrichten abzufragen. Wenn ihre Server langsam sind, wartet Ihre Administrationsseite und ist aufgrund der Netzwerkverzögerung und des Ladens der externen Nachrichten tatsächlich langsam. Wenn Sie Ihre ausgehende Serververbindung über eine Firewall gesichert haben, kann dies noch frustrierender sein, da die Administrationsoberfläche auf das Zeitlimit wartet, wenn sie magentocommerce.com nicht erreichen kann
So deaktivieren Sie es: Gehen Sie zu System -> Konfiguration, scrollen Sie nach unten und klicken Sie auf Erweitert (im Abschnitt Erweitert). Jetzt deaktivieren
Mage_AdminNotification
und speichern!quelle
Mage_AdminNotification
.Ich habe nur oberflächliche Erfahrungen mit Magento. Ich habe es auf einem gemeinsam genutzten Grid-Server installiert und das Laden der Seite war düster ~ 5 + Sekunden. Aus Versehen habe ich es auf meinem für CMS-Sites optimierten dedizierten Server installiert, und es fühlte sich sehr, sehr bissig an.
Mein dediziertes Hosting hatte ~ 10 Joomla! Websites und eine VBullitin-Website wird ausgeführt.
Ich vermute, dass es beim Shared Hosting einfach nicht performant sein wird. Das Überabonnement lässt einfach nicht genügend Ressourcen zu, damit Magento ordnungsgemäß ausgeführt werden kann.
quelle
Ich bin mehr an der Optimierung verwalteter Server in meinem Unternehmen beteiligt, habe aber möglicherweise einige Tipps für Sie. Zunächst können Sie den Code mithilfe der Code-Tracing-Funktion des Zend-Servers genauer betrachten. So können Sie sehen, wo und wann die Dinge schmutzig werden.
Ich teile völlig Benlumleys Überlegungen zum Cache. Die meisten von uns gehosteten Sites verfügen nicht einmal über die Block-Caching-Aktivierung. Dieser Cache muss explizit aufgerufen und nicht "angenommen" werden. Wenn Ihr Code noch nicht an diesem Mechanismus teilgenommen hat, sollten Sie ihn unbedingt ausprobieren. Wenn Sie eine EE-Version haben, können Sie die ganze Seite aufrufen, um das Beste aus dem Biest herauszuholen.
Ein Reverse-Proxy hilft auch sehr. Dadurch werden die statischen Ressourcen zwischengespeichert, wodurch der Druck auf den PHP-Interpretationsstapel Ihrer Frontserver erheblich verringert wird.
Vergessen Sie nicht, den Sitzungs- und Magento-Cache auf eine RAM-Disk zu schreiben. Dies wird Sie definitiv auch auf ein anderes Leistungsniveau bringen.
Hier gibt es noch viel zu sagen, aber mir läuft die Zeit davon. Sie müssen wissen, dass eine gute Site, die in einer 1.4.1 CE-Version gut codiert ist, auf einem 2x5650 Xeon + 16 GB RAM-Server läuft und über einen Rproxy verfügt, bis zu 50.000 eindeutige Besucher pro Tag mit reibungslosen Seiten für alle Besucher aufnehmen kann .
quelle
Der Wechsel von Apache zu LiteSpeed hat uns sehr geholfen. Zusätzlich zu: Bearbeiten der MySQL-Einstellungen, Installieren von Fooman Speedster (Modul zum Komprimieren / Kombinieren von JS- und CSS-Dateien) und Installieren von APC. Magento hat außerdem ein Whitepaper veröffentlicht, in dem erläutert wird, wie die Enterprise Edition die beste Leistung erzielt. Es gilt jedoch auch für die anderen Versionen: http://www.magentocommerce.com/whitepaper/
quelle
Es gibt viele Gründe, warum Ihr Magento-Einkaufswagen langsam fahren könnte, aber keine Entschuldigung, denn es gibt verschiedene Möglichkeiten, das Problem zu lösen und es verdammt schnell zu machen. Das Aktivieren von Gzip durch Ändern Ihrer htaccess-Datei ist ein Anfang. Sie können auch die Fooman Speedster-Erweiterung installieren. Der verwendete Servertyp bestimmt auch die Geschwindigkeit Ihres Geschäfts. Weitere Tipps und eine bessere Erklärung finden Sie hier http://www.interactone.com/how-to-speed-up-magento/
quelle
Bei der Erstinstallation hatte ich Seiten, deren Laden 30 Sekunden dauerte. Mein Server war nicht voll mit RAM oder Prozessor, daher wusste ich nicht, was ich tun sollte. Beim Betrachten des Firebug-Netzpanels wurden ungefähr 100 Dateien pro Seite geladen, und es dauerte lange, bis jede Verbindung hergestellt war. Nach der Installation von fooman speedster und dem gzip im htaccess waren die Ladezeiten auf 3 Sekunden gesunken, wie bei anderen Einkaufswagen auf meinem Server.
quelle
Magento ist sehr langsam, da das Datenbankdesign nicht sehr gut ist. Der Code ist ein Chaos und sehr schwer zu aktualisieren und zu optimieren. Alle Optimierungen erfolgen also über den Cache anstelle von Code.
Andererseits. Es ist ein Webshop mit vielen Tools. Wenn Sie also einen flexiblen Webshop benötigen, kaufen Sie einfach einen sehr leistungsstarken Server und Sie werden in Ordnung sein.
quelle
Es wird auch auf Funktionalität und Leistung ankommen.
Die Rohleistung wird mit nginx, php-fpm, memcached, apc und einem ordnungsgemäß gestalteten Server erzielt.
Funktionen wie Plesk- und Magento-Leistung können verwaltet werden, indem die gesamte Infrastruktur beim Entwurf einer Magento-Leistungswolke berücksichtigt wird.
quelle