Warum ist Magento 2 extrem langsam?


30

Ich habe Magento 1.9 verwendet und es war in Ordnung. Es war nicht so schnell wie eine einfache Joomla-Site, aber ich hatte viele Kunden ohne Probleme.

Jetzt wollte ich meine Seite auf Magento 2 upgraden, kaufte mir einen neuen Host (so wie ich ihn momentan habe) und installierte Magento 2 ohne Beispieldaten und es ist ein Problem. Nicht nur der Administrator, sondern auch die leere Homepage brauchen Minuten zu laden und wenn ich versuche, ein Konto zu erstellen, erhalte ich eine Fehlermeldung, dass ich "Ressourcenlimit erreicht" habe

Ich habe es mit Facebook FlashCache, OptimumCache und Cloudflare versucht , aber nichts hat sich geändert, obwohl die Entwickler sagten, dass Magento 2 viel schneller ist als die erste Version.

Ich möchte verstehen, warum sie es nach so vielen Jahren nicht reparieren können und warum so viele Leute es benutzen?

Gibt es eine Möglichkeit, es zu befestigen?

AKTUALISIEREN:

Ich habe mgt-commerce schon früher verwendet und es war unglaublich schnell. Das Laden dauerte weniger als 2 Sekunden, aber es kostete zu viel: AWS-Preis + 199,00 €

Sie boten php7 / HHVM, Lack, Redis, CDN, NGINX standardmäßig an, ich denke, das ist der Grund, warum es schnell war.

Ich musste ein Amazon WS-Konto kaufen. Ich weiß nicht, warum meine Website vermutlich tatsächlich von Amazon gehostet wurde.

Ich suche die gleiche Geschwindigkeit für einen niedrigeren Preis. Ein Beispiel für einen VPS-Anbieter.

Ich habe mich umgesehen, aber festgestellt, dass jeder Hosting-Anbieter behauptet, Magento-Hosting zu haben. Siteground, Mochahost, Hostgator, Fastcomet etc.

Vielleicht gibt es einen Hosting-Anbieter, der diese Caches installiert, um die Konkurrenz zu schlagen.

PS: Tut mir leid, wenn mein Beitrag für Programmierer albern erscheint, habe ich mich leider für Wirtschaft, Handel und Marketing an der Universität entschieden :(


Können Sie bitte erklären, was Sie mit Facebook FlashCache, OptimumCache und Cloudflare versucht haben?
mbalparda

1
Sieht aus wie sein Umweltproblem. Auf meiner vm ist es geöffnet cms / home Seite ohne FPC <0.1s und mit FPC <0.01s
KAndy

Deaktivieren Sie CSS / JS Zusammenführen von Stores> Konfiguration> Erweitert> Entwickler Meinen Kommentar finden Sie hier magento.stackexchange.com/questions/150073/…
Konstantin Gerasimov

2
Ich fange mit M2 an und bin auch sehr frustriert über die Leistung. Wenn Ihre Software tausend Caches benötigt, um für einen einzelnen Benutzer ausgeführt zu werden, stimmt etwas nicht. Ich hoffe, ich ändere meine Meinung bald.
Ricardo Martins

@KAndy kannst du schreiben welche vm verwendest du? Wenn Sie Vagrant verwenden, ist es möglich, das Bereitstellungsskript freizugeben? Ich habe mehrere VMs ausprobiert, aber alle haben nicht funktioniert. Die Magento-Installation ist erfolgreich, aber die Seiten werden nicht geladen.
Alan

Antworten:


23

Es stehen mehrere Ressourcen zur Verfügung, um die Leistung von Magento 2 zu verbessern, und alle sind ziemlich gut dokumentiert.

Modus: Magento 2 hat Modi eingeführt, wobei der Standardmodus der langsamste ist. Probieren Sie den Entwicklermodus aus und führen Sie Ihren Live-Store immer im Produktionsmodus aus. Mehr Infos hier .

Cache: Varnish wird standardmäßig unterstützt und ist recht einfach zu konfigurieren und zu verwenden.

Redis: Redis ist eine optionale zu ersetzende Backend-Cache-Lösung Zend_Cache_Backend_File, die standardmäßig in Magento 2 verwendet wird. Es kann zum Speichern von Sitzungen und zum Zwischenspeichern von Seiten verwendet werden.

Memcache: Memcached ist ein speicherinterner Schlüsselwertspeicher für kleine Teile beliebiger Daten (Zeichenfolgen, Objekte), die aus Datenbankaufrufen, API-Aufrufen oder dem Rendern von Seiten stammen. In Magento 2 kann es für Sitzungen verwendet werden .

PHP 7: Magento 2 ist sofort mit PHP 7 kompatibel. Es wird viel darüber geforscht, wie sich PHP 7 positiv auf die Leistung auswirkt.

Dies ist nur der Anfang. Sie sollten in der Lage sein, den Webserver und den Datenbankserver zu optimieren. Dies hängt jedoch stark von Ihrem speziellen Anwendungsfall ab.

Wenn Sie nicht wissen, wie Sie das selbst machen sollen, gibt es eine Vielzahl von Unternehmen, die sich auf das Hosting von Magento spezialisiert haben.

Für eine ziemlich solide Entwicklungsumgebung ist meine persönliche Empfehlung Paliarush 'Vagrant oder die VM, die ich von Magento für die Kurse erhalten habe. Es gibt in Kürze ein offizielles Docker-Image.


8

Magento läuft auch im Entwicklermodus einigermaßen gut. Es ist jedoch eine Erstkonfiguration erforderlich.

Stellen Sie zunächst sicher, dass Magento korrekt eingerichtet ist, vorausgesetzt, Sie verwenden Ubuntu:

Verwenden Sie die neueste Version als Magento 2.2+ unterstützt 7.1 php http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

Wenn Sie mehrere PHP-Versionen verwenden, setzen Sie 7.1 über auf den Standard

sudo update-alternatives --set php /usr/bin/php7.1

Auf Magento

  1. Auf Entwickler setzen, falls noch nicht geschehen php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. Überprüfen Sie, ob der Magento-Cache aktiviert ist

    php -f bin/magento cache:status

Wenn nicht aktiviert (Serie von Einsen)

php -f bin/magento cache:enable

Aktivieren Sie die JS / CSS-Bündelung

Stores> Konfiguration> Erweitert> Entwickler

* Beachten Sie, dass der obige Menüpunkt nur im Entwicklermodus angezeigt wird

Vorlageneinstellungen

  • HTML verkleinern = Ja

Javascript-Einstellungen

  • JS-Dateien zusammenführen = Ja

  • JS-Bündelung aktivieren = Ja

  • JS-Dateien minimieren = Ja

CSS-Einstellungen

  • CSS zusammenführen = Ja
  • CSS verkleinern = Ja

Machen Sie von nun an nach jedem Schritt ein Cache-Flush. Dies ist Ihre Basis für den Versuch, die Ladezeit zu verbessern.

php -f bin/magento cache:flush

Erweiterte Bündelung

Dies wäre ein Beitrag an sich, der den Richtlinien von Magento DevDocs zur Aktivierung folgt. Dies könnte das Frontend-JS-Laden weiter erhöhen und es dreimal so schnell machen.

Verwenden Sie Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

Bearbeiten Sie /www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

Verwenden Sie PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

Aktivieren Sie den Opcache in PHP

Bearbeite /etc/php/7.1/apache2/php.ini find opcache.enable

opcache.enable=1

Ich würde auch empfehlen, eine Cloud-Datenbank wie AWS RDS oder eine andere zu verwenden, die Ihnen die Kopfschmerzen bei der Konfiguration von MySQL erspart.

Wenn Sie jetzt den Produktionsmodus aktivieren php -f bin/magento deploy:mode:set production

Sie sollten feststellen, dass es einigermaßen gut läuft.

Von hier aus können Sie Lack hinzufügen, zu Nginx wechseln und eine CDN für statische Dateien hinzufügen.


2

Ich hatte dieses Problem auch auf einem Macbook Pro (Ende 2016) mit MAMP.

Ich wollte ein Magento 2-Theme erstellen. Ich hatte alle Caches deaktiviert und es dauerte ungefähr 30 Sekunden, um eine Seite neu zu laden (Frontend und Backend).

Ich habe alle Caches mit dem Befehl "php magento cache: enable" aktiviert und die Seite wird sehr schnell geladen. Ich kann immer noch mit Grunt und LESS arbeiten, ohne einen Cache-Typ zu deaktivieren.


1

Magento 2 ist standardmäßig nicht langsam. Sie müssen diese Schritte ausführen, um es schnell zu machen:

  1. Server- und Systemanforderungen

  2. Magento-Version aktualisieren

  3. Lack-Cache aktivieren

  4. Konfigurieren Sie Memcached

  5. Aktivieren Sie flache Kategorien und Produkte

  6. Optimieren Sie Javascript und CSS

  7. Content Delivery Network

  8. Verwenden Sie ein leichtes Thema

  9. Fehlerfreie Erweiterungen

  10. Bilder sollten vollständig optimiert werden


22
Es tut mir leid, aber wenn Sie einer Anwendung mehrere Ebenen des Zwischenspeicherns hinzufügen müssen, ist dies standardmäßig langsam.
Robert Egginton

Robert: Alter, das Hinzufügen von Cache zu mehreren Ebenen eines mehrschichtigen Systems ist die richtige Art von Architektur. Wir reden nicht von Cache auf Cache ... -o-
Miracules

Die Verwendung von Caches während der Entwicklung ist keine optimale Lösung. Das Löschen des Caches bei jeder Änderung fühlt sich eher wie das Entwickeln in kompilierter Sprache an, nicht wie PHP.
Alan

0

Wie kommt es, dass Magento 2 langsam ist? Meine Website, die ein sehr umfangreiches Thema verwendet, erreicht eine solide Seitengeschwindigkeit von 93/100, und die Ladezeiten betragen 2 Sekunden. Ich würde sagen, Sie erhalten einen besseren Host für Magento, da Ihr Webserver eine große Rolle für die Leistung Ihrer Website spielt. Wie für "Standard" -Modus ist der langsamste überhaupt nicht wahr. Ich habe mein Geschäft im Standardmodus betrieben, bis ich bereit war, in den Produktionsmodus umzuschalten, und es erzielte im Standardmodus einen Wert von 91/100 und ging erst nach dem Umschalten in den Produktionsmodus auf einen Wert von 93/100 über.

Holen Sie sich einen besseren Host und einen besseren Webserver, wenn Sie Magento 2 wirklich nutzen möchten.


Nach magento cache:disabledem Laden beträgt die Zeit mehr als 30 Sekunden.
Tom Anderson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.