it-swarm.com.de

Warum ist Magento so langsam?

Ist Magento normalerweise so furchtbar langsam?

Dies ist meine erste Erfahrung damit und das Admin-Panel braucht einfach Ewigkeiten, um Änderungen zu laden und zu speichern. Es ist eine Standardinstallation mit den Testdaten.

Der Server, auf dem es gehostet wird, bedient andere Nicht-Magento-Sites superschnell. Was ist mit dem von Magento verwendeten PHP) - Code, der es so langsam macht, und was kann getan werden, um das Problem zu beheben?

134
mr-euro

Ich habe mich nur tangential mit der Optimierung von Magento für die Leistung befasst, aber hier sind einige Gründe, warum das System so langsam ist

  1. Teile von Magento verwenden ein EAV-Datenbanksystem, das auf MySQL aufbaut. Dies bedeutet, dass das Abfragen eines einzelnen "Dings" häufig das Abfragen mehrerer Zeilen bedeutet

  2. Hinter den Kulissen (Anwendungskonfiguration, Systemkonfiguration, Layoutkonfiguration usw.) gibt es viele Dinge, bei denen riesige XML-Bäume im Speicher erstellt und dann dieselben Bäume nach Informationen "abgefragt" werden. Dies benötigt sowohl Speicher (Speichern der Bäume) als auch CPU (Parsen der Bäume). Einige davon (insbesondere der Layoutbaum) sind riesig. Außerdem, es sei denn, die Zwischenspeicherung ist aktiviert, werden diese Baumstrukturen aufgebaut aus Dateien auf der Festplatte und bei jeder Anforderung.

  3. Magento verwendet sein Konfigurationssystem, um das Überschreiben von Klassen zu ermöglichen. Dies ist eine leistungsstarke Funktion. Sie bedeutet jedoch, 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 Klassendatei zum Überschreiben erforderlich ist. Das summiert sich.

  4. Neben dem Layout-System beinhaltet das Magento-Vorlagensystem eine Menge rekursives Rendering. Das summiert sich.

Im Allgemeinen hatten die Magento-Ingenieure in erster Linie die Aufgabe, ein möglichst flexibles und anpassbares System zu entwickeln und sich später Gedanken über die Leistung zu machen.

Das erste, was Sie tun können, um eine bessere Leistung sicherzustellen, ist das Aktivieren des Caches (System -> Cache-Verwaltung). Dadurch wird ein Teil der CPU-/Festplattenblockierung aufgehoben, die beim Aufbau der verschiedenen XML-Bäume von Magento auftritt.

Das zweite, was Sie tun möchten, ist stellen Sie sicher, dass Ihr Host- und Betriebsteam Erfahrung mit der Leistungsoptimierung von Magento hat. Wenn Sie sich auf den 7-Dollar-Plan pro Monat verlassen, dann wünschen wir Ihnen viel Glück.

179
Alan Storm

Neben den Empfehlungen von Alan Storm zum Zwischenspeichern möchte ich Ihnen zwei Dinge empfehlen, die sich mit dem Zwischenspeichern befassen:

- Stellen Sie sicher, dass die Zwischenspeicherung nicht auf der Festplatte, sondern im Speicher erfolgt.

Ich kümmere mich um ein paar Magento-Installationen, und sobald das System geladen ist, arbeitet memcached deutlich schneller. 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 einige allgemeine Informationen ansehen Infos dazu auch.

- Vorlagen-/Ansichts-Caching aktivieren.

Dies ist ein guter Artikel: http://inchoo.net/ecommerce/magento/magento-block-caching/

Es gibt auch gute auf der Magento-Website (google magento block caching), aber es ist im Moment nicht verfügbar.

Um meine zwei Cent zum Block-Caching hinzuzufügen, empfehle ich Ihnen, Ihre eigenen Blöcke in/app/code/local zu erstellen, die Kernblöcke zu erweitern und die Cache-Parameter zu definieren, sie mit xxx_Cache zu bezeichnen und dann Ihr Layout zu aktualisieren, um stattdessen diese Blöcke zu verwenden der Kern diejenigen. Auf diese Weise vermeiden Sie, dass Ihre Änderungen verloren gehen oder das System beschädigt wird, wenn Sie ein Upgrade von magento durchführen.

54
benlumley

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-high-available-magento-stores-powered-by-rackspace-solutions/

--- edit ---

Eine weitere großartige Ressource, die ab Oktober 2011 verfügbar ist, ist: http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(Danke an Alan Storm für diesen Beitrag.)

23
Laizer

Möglicherweise gibt es auch einen nicht offensichtlichen Grund, warum Ihre Administrationsoberfläche sehr langsam ist. Magento hat ein Modul namens Mage_AdminNotification. Versuchen Sie, diese ext zu deaktivieren. Es fragt nämlich magentocommerce.com nach neuen Aktualisierungsnachrichten ab. Wenn ihre Server langsam sind, wartet Ihre Administratorseite 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 Timeout wartet, wenn sie nicht auf magentocommerce.com zugreifen kann

So deaktivieren Sie es: Gehen Sie zu System -> Konfiguration, scrollen Sie nach unten und klicken Sie auf Erweitert (im Abschnitt Erweitert). Deaktiviere nun Mage_AdminNotification und speichern!

17
Sam Figueroa

Ich habe nur eine oberflächliche Erfahrung mit Magento. Ich habe es auf einem gemeinsamen 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! Sites und eine VBullitin-Site ausgeführt.

Meine Vermutung ist, dass es bei Shared Hosting einfach nicht performant sein wird. Das Über-Abonnement lässt einfach nicht genug Ressourcen zu, damit Magento so läuft, wie es sollte.

6
creuzerm

Ich bin mehr an der Optimierung von verwalteten Servern in meinem Unternehmen beteiligt, habe jedoch möglicherweise einige Tipps für Sie. Zunächst können Sie den Code mit der Code Tracing Funktion von Zend Server genauer betrachten. So können Sie sehen, wo und wann die Dinge schmutzig werden.

Ich teile Benlumleys Überlegungen zum Cache. Die meisten Websites, die wir hosten, verfügen nicht einmal über die Block-Caching-Funktion. Dieser Cache muss explizit aufgerufen und nicht "angenommen" werden. Wenn Sie also noch nicht an diesem Mechanismus teilgenommen haben, sollten Sie ihn unbedingt ausprobieren. Wenn Sie über eine EE-Version verfügen, können Sie die vollständige Seite anzeigen, um das Beste aus dem Biest herauszuholen.

Ein Reverse-Proxy wird auch viel helfen. Die statischen Ressourcen werden zwischengespeichert, was den Druck auf den PHP-Interpretationsstapel Ihrer Frontserver erheblich verringert.

Vergessen Sie nicht, die Sessions und den Magento-Cache auf eine RAM) -Diskette zu schreiben. Dadurch erreichen Sie definitiv ein anderes Leistungsniveau.

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 und mit einem Rproxy obenauf bis zu 50.000 dauern kann Eindeutige Besucher pro Tag mit reibungslosen Seiten für alle.

6
kameo

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 auch ein Whitepaper veröffentlicht, in dem beschrieben wird, wie Sie die beste Leistung aus der Enterprise Edition herausholen. Es gilt jedoch auch für die anderen Versionen: http://www.magentocommerce.com/whitepaper/

5
Jonathan

Es gibt viele Gründe, warum Ihr Magento-Einkaufswagen langsam läuft, aber keine Entschuldigung, 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/

4
Thomas

es kommt auch auf die Funktionalität im Vergleich zur Leistung an.

Rohe Leistung wird mit Nginx, PHP-FPM, Memcached, APC und einem ordnungsgemäß gestalteten Server erzielt.

Funktionen wie Plesk und Magento Performance können verwaltet werden, indem die gesamte Infrastruktur bei der Entwicklung einer Magento Performance Cloud berücksichtigt wird.

3
ProContractors

Bei der Erstinstallation hatte ich Seiten, deren Laden 30 Sekunden dauerte. Mein Server war weder im RAM noch im Prozessor ausgelastet, daher wusste ich nicht, was ich tun sollte. Wenn man sich das Netzpanel von firebug ansieht, wurden ungefähr 100 Dateien pro Seite geladen, und es dauerte lange, bis die Verbindung hergestellt war. Nach der Installation von fooman speedster und dem gzip in htaccess waren die Ladezeiten auf 3 Sekunden gesunken, wie bei anderen Warenkörben auf meinem Server.

3
Scott

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.

Auf der anderen Seite. Es ist ein Webshop mit vielen Tools. Wenn Sie also einen flexiblen Webshop benötigen, kaufen Sie einfach einen sehr leistungsstarken Server und Sie sind in Ordnung.

3
developer