it-swarm.com.de

Magento 2 läuft sehr langsam (Entwicklermodus)

Vor kurzem begann ich mit der Entwicklung von Magento 2-Projekten.

Zuerst habe ich es mit xampp unter Windows versucht und es war ein Durcheinander ... jede Aktualisierungsseite war ein Albtraum, etwa 30-40 Sekunden, um die Seite zu laden. Ich habe darüber gelesen, dass Windows-Systemdateien mit Magento so langsam arbeiten, weil die Struktur sehr groß ist, und der Artikel zwang Sie fast immer, Linux für die Entwicklung von Magento-Projekten zu verwenden.

Das Problem ist, ich brauche Windows für eine andere Unternehmensanwendung, die nur unter Windows funktioniert. Ich habe versucht, eine virtuelle Maschine mit Virtualbox zu installieren. Es hat sich etwas verbessert ... aber die Tatsache, dass ich an einer virtuellen Maschine arbeite, hat mich sauer gemacht ...

Die nächste Lösung, die ich derzeit arbeite, verwendet Vagabund. Okay, ich fühle mich auf diesem Weg gut, aber es geht langsam voran ... 15-20s ... 

Meine Konfiguration auf Vagrant ist 5120MB (PC hat 8GB) und benutze alle meine 4 Kerne. 

Ich fühle mich so schlecht, so zu arbeiten ... als ich an meinen vorherigen Projekten mit symfony/Laravel/Codeigniter gearbeitet habe, war Folgendes:

schreiben Sie einige Codezeilen, Tab in Browser, F5, SOFORT Änderungen anzeigen.

Auf M2: Schreibe ein paar Codezeilen, Tab zum Browser, F5, warte ... warte ... okay, jetzt wird die Seite aktualisiert, aber sie wird nicht geladen, warte ... warte ... hmmm fast ... ok. Keine Änderungen, aber ich habe den Cache gesäubert ... ohhh, ich glaube, ich musste auch statische Dateien entfernen. Los geht's ... warte wieder ...

Gott ... M2 geht nicht schneller? Ich frage nur 5s oder so etwas ... ich fühle mich einfach so dumm, wenn ich den Bildschirm sehe und die ganze Zeit darauf warte ...

Für Aclarations bitte ich nur um Entwicklungsmodus, ich versucht Ich musste ein anderes Projekt von Magento im Produktionsmodus installieren, um die Dinge schneller zu testen, und dann ist es in Ordnung, verglichen mit dem Entwicklermodus. 

Nun, das ist alles ... Das einzige, was ich nicht ausprobiert habe, ist die Verwendung einer Linux-Umgebung auf dem Computer ... aber es ist genau das gleiche wie mit Vagrant ... Ich verstehe nicht ... wie entwickeln Sie M2-Entwickler? in speziellen Frontend-Entwicklern ... Ich glaube nicht, dass sie auf dieselbe Weise funktionieren wie ich ... Warten auf 20 Sekunden, bis die Seiten geladen wurden + Cache geleert wurde + statische Dateien entfernt wurden usw.

Details: Ich habe alles mit Vagrant ausprobiert, aber nicht verbessert, ich bin derzeit auf Ubuntu 15.04, Apache 2.4, PHP 5.6 (ich habe 7 versucht, aber immer noch gleich) mysql 5.6

Dies ist die Netzwerkregisterkarte: http://i.imgur.com/HG7mbeX.pnghttp://i.imgur.com/HG7mbeX.png

17
slayerbleast

Ich habe alles ausprobiert und das einzige, was funktioniert, ist die virtuelle Maschine, die Bitnami bereitstellt. https://bitnami.com/stack/magento/virtual-machine

Im Ernst, ich weiß nicht, was diese vm hat, geht aber sehr schnell. Ich habe versucht, meine VM mit einer neuen Installation von Ubuntu, CentOS usw. zu erstellen. Funktioniert jedoch nicht so gut wie diese VM.

2
slayerbleast

Update 2018, Magento 2.2.4

Vagrant + Windows + Magento2 = Katastrophe. Vagrant + Apple + Magento2 = Katastrophe.

Ubuntu + Magento2 = Kochen mit Gas.

Einfache Module, z. Ein Widget dauert viele Tage länger als die erwarteten 2-3 Stunden und es ist nicht möglich, sich daran zu erinnern, was Sie tun, wenn das Öffnen einer Seite eine Minute dauert. Dies gilt insbesondere, wenn Sie Caches löschen, kompilieren, aktualisieren oder etwas anderes machen müssen Das sollte überhaupt keine Zeit in Anspruch nehmen.

Dies habe ich aus erster Hand erlebt, als ich in einem Büro gearbeitet habe, in dem Mac oder Windows als Option verfügbar sind. Nachdem ich einen ganzen Tag damit verbracht hatte, die Vorlagenrichtlinie zu ändern und keine Konfigurationsänderung innerhalb von 8 Stunden vorgenommen hatte, überlegte ich mir, ob ich mir eine Linux-Box zulegen sollte, um zu sehen, ob ich verrückt geworden war oder ob diese Vagrant-Technik so hilfreich ist betrunkener Penner schläft rau im Park die Straße runter.

Die gealterte Linux-Box mit anämischem RAM, eine alte SSD, Standard-Apache und keine ausgefallenen Cache-Dinge erledigten die Aufgabe ohne Probleme. Ich konnte mühelos zwischen Entwickler- und Produktionsmodus wechseln und bekam das, was ich Tage gebraucht hatte, um es nicht innerhalb von Minuten zu erledigen.

Die Arbeitsmaschine war die 8. Generation i7, das Vagrant-Setup war sehr stark das Baby von jemandem und es wurde viel Zeit darauf verwendet, das Biest zu bauen. Tektonische Platten bewegen sich jedoch schneller. Vagrant und Virtualisierung mögen in Mode sein, aber für die M2-Entwicklung nützt es nichts. Tatsächlich habe ich M2 installiert und alle Einstellungen für db und vhost in kürzerer Zeit vorgenommen, als eine Vagrant-Box benötigt.

Da M2 in einem grundlegenden Linux-Setup 10-mal schneller ist als einige ungeschickte Vagrant-Bemühungen, ist es leicht zu erkennen, wo die wirklichen Geschwindigkeitsprobleme von Magento 2 liegen. Wenn Sie Lighthouse in Chrome starten, werden Sie feststellen, dass TTFB absolut in Ordnung ist, aber die Leistung halbiert sich, wenn Sie das JS + CSS minimieren und zusammenführen. Das liegt daran, dass M2 ein Megabyte an Skripts zum Herunterladen hat. Dies ist der Leistungskiller. Wenn Sie an einer Vagrant-Box arbeiten, werden Sie dies nie sehen und haben nicht die Geschwindigkeit, um diese zu beheben. Mit diesem Problem meine ich, dass Sie ein passendes Design schreiben, das keinen Quatsch wie jQuery auf jeder Seite hat.

Für die Produktion benötigen Sie etwas Skalierendes, damit Sie die normale Geschwindigkeitssteigerung erreichen können, z. Redis, Opcode Caching, Varnish, optimierte PHP-Fpm, optimierte MySQL/MariaDB. Wenn Sie unter Linux entwickeln, können Sie diese Dinge auf localhost testen und wissen, dass sie in der Produktion gut funktionieren. Mit dieser Abscheulichkeit, die Vagrant ist, werden Sie vorzeitig mit diesen Optimierungen experimentieren, weil Sie auf eine leistungsfähige Maschine hoffen und beten, weil Sie Arbeit erledigen müssen. Auf diese Weise und ohne die native Geschwindigkeit werden Sie nichts erreichen.

Wenn Sie nicht über eine Ersatzmaschine verfügen, um Linux anzulegen, gehen Sie einfach zum lokalen Tipp, holen Sie sich einen PC, schieben Sie eine SSD hinein, und Sie können loslegen.

4
Henry's Cat

mein Rezept: 

  • Verwenden Sie * nix als Hauptbetriebssystem

  • Verwenden Sie das Docker mit PHP 7 und Nginx

  • verwenden Sie gulp zum Erzeugen von css und js (schneller als grunzen)

  • verwenden Sie Redis und Lack

  • deaktivieren Sie nur benötigte Caches

Und der wertvollste Ratschlag - Sie brauchen wirklich {brauchen SSD, um mit magento2 zu arbeiten, wenn Sie noch versuchen, auf HDD zu entwickeln

p/s Magento 2 ist komplizierter als Symfony/Laravel/CI (M2 besteht übrigens aus Symfony ) und kann nicht so schnell sein wie reine Frameworks 

1
bxN5

Im "Entwickler" -Modus wurden alle Caches deaktiviert. Deshalb wird Magento langsam. Ich schlage vor, Caches durch Ausführen des Befehls zu aktivieren 

./bin/magento cache:enable

Sie müssen den Cache ./bin/magento cache:clean jedoch jedes Mal bereinigen, wenn Sie XML-Dateien oder -Konfigurationen ändern.

1
ndlinh

Wenn Sie im Entwicklermodus arbeiten, müssen Sie die JS/CSS-Verknüpfung deaktivieren, xdebug deaktivieren und opcache aktivieren. Fühlen Sie sich frei, diese MySQL-Abfragen in Ihrer Dev-DB auszuführen und den Cache zu leeren. Dies erhöht die Leistung der Site im Entwicklermodus.

UPDATE core_config_data SET value = '0' WHERE path = 'dev/css/merge_css_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/css/minify_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/merge_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/minify_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/enable_js_bundling';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/static/sign';
0
Igor Sydorenko

Ich habe diesen Vagrant gemacht, mit dem Sie die Montageoptionen anpassen können, und bietet eine hervorragende Leistung:

  • nfs mount oder reguläres mount
  • verzeichnismount /var/www/magento/app oder gesamtes Projekt /var/www/magento

https://github.com/zepgram/magento2-fast-vm

Sie können an einer schnellen Magento-Installation arbeiten und Parameter entsprechend Ihrer Arbeitspraxis und der Leistung Ihres Host-Computers anpassen.

Wenn Ihr Host-Computer beispielsweise die NFS-Option nicht unterstützt und eine schlechte Leistung aufweist, können Sie nur das App-Verzeichnis bereitstellen, das für die Entwicklung ausreicht.

0
Benjamin Calef

Ok, ich arbeite seit ca. 6-8 Monaten mit Magento 2.2.7. Es gibt also einige Hinweise, die Sie berücksichtigen sollten:
1. benutze [~ # ~] ssd [~ # ~] Festplatte (falls möglich)
2. Konfigurieren Sie Grunzen in Magento. Es wird sicherlich helfen, die Entwicklung des Frontends in Magento schnell zu machen. weil grunt hilft, weniger Dateien zu kompilieren, ohne den Befehl s: s: d ausführen zu müssen.
grunzt mit Magento

3. aktiviere xdebug nicht.
4. Deaktivieren Sie den Cache nur, wenn Sie die Seite zu oft hintereinander neu laden.

0
spider01

Um Entwicklern Flexibilität zu geben, generiert Magento viele Dateien. Wenn es im Produktionsmodus ausgeführt wird, ist der langsamste Teil das Lesen der Festplatte, das optimiert werden kann. Während Magento 2 im Entwicklermodus ausgeführt wird, wird es durch Lese- und Schreibvorgänge auf der Festplatte zu langsam.

Das habe ich auch bei der Entwicklung von Magento 2-Anwendungen erlebt. Mein erster Vorschlag ist, auf SSD zu wechseln. Es ist jedoch nicht immer für jeden möglich. Es war mir auch nicht möglich, eine SSD in meinem High-End-Laptop mit viel RAM und CPU-Leistung zu installieren.

Ich habe eine Lösung gefunden, die meine Entwicklung in localhost mit Redis Cache erheblich beschleunigt hat. Das Reinigen und Erwärmen des Caches wurde extrem schnell, was meine Wartezeit drastisch reduzierte, um die Änderungen zu sehen. Hier ist der vollständige Artikel zur Verwendung von Redis Cache in localhost mit Magento 2 .

0
AnkitK

Deaktivieren Sie die Synchronisierung mit dem Standard-Vagrant-Synchronisierungsordner (einfach kommentieren Sie den Ordner config.vm.synced_folder in VagrantFile und laden Sie ihn neu). Dies ist zu langsam, wenn Sie mit vielen Dateien arbeiten müssen ...

Auch im Entwicklermodus können statische Dateien generiert werden: bin/magento setup:static-content:deploy und sicherstellen, dass alle Caches aktiviert sind: bin/magento cache:status 

Wenn es nicht hilft, können Sie das auf Docker basierende Magento DevBox-Tool ausprobieren: http://devdocs.magento.com/guides/v2.1/install-gde/docker/docker-over.html

0
Michail

Für die Produktionsumgebung:

Sie müssen Redis verwenden, um Cache, Ganzseiten-Cache und Sitzung zu behandeln ( http://devdocs.magento.com/guides/v2.0/config-guide/redis/config-redis.html )

Sie müssen Varnish für den mit Magento eingebauten HTTP-Cache verwenden ( http://devdocs.magento.com/guides/v2.1/config-guide/varnish/config-varnish.html )

Sie müssen den Produktions-Magento-Modus einrichten. ( http://devdocs.magento.com/guides/v2.1/config-guide/bootstrap/magento-modes.html )

Sie müssen ElasticSearch für Suchmaschinen verwenden, nur für EE ( http://devdocs.magento.com/guides/v2.1/config-guide/elasticsearch/es-overview.html )

Sie müssen PHP 7 verwenden

Sie können MariaDB auch verwenden, wenn es von Magento 2 nicht unterstützt wird.

Sie müssen die CSS-Minifizierung und JS-Minifizierung und JS-Bündelung verwenden (die nur im Produktionsmodus funktioniert).

Überprüfen Sie die offizielle Magento 2-Dokumentation, um diese Produktionskonfiguration einzurichten.

0
Franck Garnier

Ein bisschen spät hier, aber ich denke, die Antwort bei der Arbeit an Vagrant/Docker ist meistens, dass die E/A-Daten von Dateien extrem langsam sind. 

Meine Lösung bestand einfach darin, den gesamten freigegebenen Ordner zu deaktivieren und durch ein Remote-Projekt (Sftp-Verbindung) in PhpStorm zu ersetzen. Alle Dateien werden so in der virtuellen Maschine gespeichert und müssen nicht jedes Mal synchronisiert werden, wenn die Seite neu geladen werden muss. 

Der Hauptvorteil ist natürlich, dass es im Entwicklermodus erstaunlich schnell ist. 

Es gibt aber auch kleinere Probleme bei der Arbeit mit diesem Setup:

  • Sie können keine Befehle direkt von Ihrem Terminal aus ausführen. Sie müssen ssh in Ihren Vagrant einbinden, um die magento2 cli-Befehle auszuführen. 

  • Nach dem Ausführen von Composer-Updates müssen Sie möglicherweise den gesamten Ordner erneut herunterladen, da Remote-Änderungen in PhpStorm nicht automatisch heruntergeladen werden. 

0
tobias

Dies ist mein Rezept für die Entwicklung von Themen/Modulen in localhost für Magento 2.2 und 2.3:

  • Macbook Pro
  • Valet Plus (Nginx, MySQL 5.7, PHP7.1 und 7.2 - Sie können problemlos zwischen PHP Versionen mit valet use 7.1 oder valet use 7.2) https://github.com/weprovide/valet-plus
  • memory_limit auf 4G eingestellt
  • Stellen Sie sicher, dass Magento auf den Entwicklermodus eingestellt ist: php bin/magento deploy:mode:set developer
  • ALLE CACHES ERLAUBT außer FPC. Wenn ich eine Änderung mit Konfigurationsdateien usw. testen muss, lösche ich manuell den Inhalt des var/cache-Ordners oder den generated/code-Ordner für DI-Änderungen. Der Cachetyp, der speziell alles verlangsamt, ist der Konfigurationscache. Er muss aktiviert werden, da sonst die Frontend-/Backendseiten sehr langsam geladen werden.
  • Ich verwende Grunt Watch und die Livereload Chrome-Erweiterung, um meine Änderungen an .less-Dateien anzuzeigen, ohne dass bei jeder Änderung statische Dateien bereitgestellt werden müssen. https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/css_debug.html
  • Immer wenn ich eine JS-Datei ändere, navigiere ich zu pub/static/[adminhtml/frontend]/[theme]/[locale]/und lösche NUR den Ordner, in dem sich die statische Datei befindet, die der JS-Datei entspricht, in der ich das Leben verändert habe Sie müssen ALLE statischen Dateien bereitstellen. Magento regeneriert nur die statischen Dateien für den gelöschten Ordner, wodurch viel Zeit gespart wird (stellen Sie sicher, dass Sie in Ihrem Browser jedes Mal eine erneute Aktualisierung durchführen, wenn Sie eine statische Datei löschen).

Es ist immer noch kein perfektes Setup, aber es ist der schnellste Weg, den ich bisher gefunden habe, um produktiv zu sein, ohne mir die Haare auszureißen.

0

@ Henry's Cat ist richtig. Nicht-Linux-Betriebssystem + Magento2 = Katastrophe. Wenn Sie nicht intensiv mit XML arbeiten, können Sie den Magento-Cache bin/magento cache:enable Aktivieren und bin/magento cache:clean Verwenden, wenn Sie etwas in diesen Dateien ändern, oder besser nur bestimmte Cache-Typen deaktivieren bin/magento cache:disable db_ddl full_page. @Igor Sydorenko hat vollkommen recht. Wenn Sie das Zusammenführen/Minimieren von CSS deaktivieren, wird die Leistung im Entwicklermodus VIEL VERBESSERT.

0
Jean Paul CP