Magento2 läuft so langsam auf localhost Entwicklung

25

Ich habe kürzlich begonnen, neue Erweiterungen oder Anpassungen für magento2 zu entwickeln, und mein erster Eindruck war ein Albtraum. Ich muss ungefähr 20-30s auf jede Änderung warten, die ich vornehme? Ja wirklich?

Ich spreche über den Entwicklungsmodus , ich weiß, dass in der Produktion mit aktiviertem Cache und anderen Dingen die Website glatt sein kann. Wenn ich jedoch mit einer Erweiterung oder einem Layoutproblem arbeite, muss ich statische Dateien entfernen, den Cache leeren usw.

Meine Frage ist, wie Sie alle M2-Entwickler arbeiten? weil ich nicht glaube, dass Sie 20-30s warten müssen, um die Seite zu aktualisieren ...

Meine Umgebung: Mein PC ist "gut" i5 mit 8 GB RAM. Ich muss mit Windows arbeiten, damit ich vagrant verwende:

  • Nutzung aller 4 Kerne CPU
  • Verwenden Sie 5120 MB RAM
  • Ubuntu / trusty64 - Ubuntu 14.04
  • PHP Version 7.0.12-1 + deb.sury.org ~ trusty + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ vertrauenswürdig
  • Magento 2.1.2 wird nur mit Beispieldaten installiert (es werden keine weiteren Module installiert)
  • (Frag mich, ob du noch mehr wissen willst)

Was passiert genau? Normalerweise reagiert M2 in Ordnung, langsam, aber in Ordnung, etwa 5 bis 10 Sekunden, um die Seiten zu laden, aber manchmal (häufiger als manchmal) bleibt es einfach für immer hängen! manchmal ist die erste Seite und manchmal sind es die CSS-, JS-, HTML-Dateien, aber immer liegt das Problem bei TTFB.

Ich habe ein Problem mit dem Setup-Assistenten gesehen ... mit angular.js halten diese Dateien ewig ...

In diesen 2 Bildern geht es um die Navigation im Setup-Assistenten.

http://imgur.com/Izoyuhj http://imgur.com/Vs5q8eT

Dann eine andere, die im Frontend-Katalog navigiert: http://imgur.com/oXYC52D

Was frage ich genau? Ist das normal? arbeitet ihr mit diesem Timing? Ich habe dies mit einigen Kollegen kommentiert und wir glauben einfach nicht, dass ich so arbeiten muss? Manchmal verzweifle ich daran, die ganze Zeit auf dem Bildschirm zu warten ...

Wenn mich jemand bittet, ihm einen Test zu zeigen, zum Beispiel ein neues Produkt zu kreieren oder so, dann flippt er einfach aus ... Eine neue Bestellung erstellen, die Felder ausfüllen und jedes Feld führt ein js aus, das 5-6s dauert ...

Ich weiß es nicht, aber ich fühle mich so schlecht mit diesem Zeug zu entwickeln ...

Jäger der Finsternis
quelle
Ich hatte noch keine Chance, mit Magento 2 zu spielen. Ich gehe jedoch davon aus, dass die meisten Leistungsprobleme auf Ihre vagabundierende Umgebung zurückzuführen sind. Benutzt du virtualbox mit Vagabunden oder etwas anderem? Die Verwendung mehrerer Kerne mit VirtualBox beeinträchtigt die Leistung. Führen Sie das magento von einem freigegebenen Ordner aus, auf dem vagrant> magento Dateien auf dieselbe Freigabe zurückschreibt, auf der Leistungsprobleme auftreten.
Olli Tyynelä
Außerdem haben Sie möglicherweise nicht genügend Arbeitsspeicher auf Ihrem System, was dazu führt, dass Swap auf dem Host verwendet wird, wenn Sie den Vagrant 5gigs geben. Erhöhen Sie die Menge nur, wenn Sie sie tatsächlich benötigen.
Olli Tyynelä
Ein großer Teil Ihres Problems besteht darin, dass Sie unter Windows arbeiten. Ich war jahrelang unter Windows und es war super langsam mit Vagrant / Magento. Dies liegt am Dateisynchronisationsmodus, der nicht mit nfs übereinstimmt. Ich habe mit dem Dual-Booten des Ubuntu-Desktops begonnen und meine Magento-Sites waren sehr schnell. Eine Weile später bekam ich einen Mac, der NFS verwendet und der auch sehr schnell ist.
Shawn Abramson
Ja, es ist ein Landstreicher mit virtualbox. Warum müssen mehr Kerne die Leistung beeinträchtigen? Ich gehe davon aus, dass die Weitergabe aller Ressourcen an VM langsam ist "mein PC", aber meine VM schneller ... Und der Ordner, den ich verwende, ist / var / www (Ich habe versucht, keinen freigegebenen Ordner zu verwenden, es ist nur "Linux", was ausgeführt wird jetzt). Wie kann ich sehen, was fehlschlägt? Ich kann top oder solche Befehle ausführen ... aber ich weiß nicht, wie ich sie interpretieren soll ...
slayerbleast
@ShawnAbramson Yep ... wir haben vorgeschlagen, Dual Boot zu installieren, nur um es zu versuchen, denn wie gesagt, wir glauben nicht, dass M2-Entwickler so arbeiten, wie ich es gerade tue, hehe ...
slayerbleast

Antworten:

8

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 dieses vm hat, aber es geht wirklich schnell. Ich habe versucht, meine VM mit einer Neuinstallation von Ubuntu, CentOS usw. zu erstellen. Aber keine funktioniert so gut wie diese VM.

Jäger der Finsternis
quelle
Ich denke, der Hauptunterschied zur Spezifikation dieser VM ist Memcache? Was auf meinem Windows (zumindest auf PHP 7 nicht möglich ist)
MackieeE
6

Deaktivieren Sie das Zusammenführen und Minimieren von CSS / JS:

Stores > Configuration > CSS Settings (Javascript Settings) > Merge CSS (Merge JS) > NO

Stores > Configuration > CSS Settings (Javascript Settings) > Minify CSS (Minify JS) > NO

In diesem Handbuch erfahren Sie auch, wie Sie die Leistung von Magento 2 verbessern können.

Konstantin Gerasimov
quelle
1
Die Standardeinstellungen haben bereits diese Werte. Und das betrifft nicht so sehr ...
Slayerbleast
Wäre das Zusammenführen auf einem Online-Server also sinnvoll? Mehr Aufwand für die Verarbeitung und nicht herunterladen?
Mohammed Joraid
Warum würdest du CSS / JS deaktivieren? Zusammenführen und Minimieren, es ist buchstäblich eine Option, um die Geschwindigkeit zu erhöhen. Das scheint mir, als würde man sich in den Fuß schießen
John,
4

Ich fand, dass der Entwicklermodus alles deaktiviert - was übertrieben war. Es gibt bestimmte Aspekte, die ich zwischenspeichern möchte, z. B. die Übersetzung. Zum Glück env.phpkönnen Sie noch festlegen, welche Caches speziell verwendet werden sollen:

'cache_types' => 
      array (
        'config' => 1,
        'layout' => 0,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 0,
        'eav' => 1,
        'customer_notification' => 1,
        'target_rule' => 1,
        'full_page' => 0,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'translate' => 1,
        'config_webservice' => 1,
        'compiled_config' => 1,
      ),

Dies war das Obige, für das ich mich entschieden habe, als ich an der Kasse gearbeitet habe, da dies ein starkes Front-End war. Ich habe mich dafür entschieden, das Layout nicht zwischenzuspeichern. Blöcke und ganze Seite, um meine Änderungen zu sehen.

MackieeE
quelle
Tausend Dank! Ich hatte dieses Problem, weil ich Magento2 auf eine neuere Version aktualisiert und eine Neuinstallation durchgeführt habe. Anscheinend überschrieb es meine env.php, was es unendlich langsam machte. Diese Korrektur in env.php hat es behoben. Danke noch einmal!
codiga
4

Vorschläge von Magento wurden veröffentlicht, nachdem diese Frage beantwortet wurde. Wenn ich andere Antworten lese, denke ich, dass diese Informationen eine hilfreiche Ergänzung sein könnten

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-environment.html

Optimale Konfiguration

Im Folgenden finden Sie eine Liste der Optimierungen, die Sie auf Ihrem lokalen Entwicklungscomputer vornehmen können

  • Magento empfiehlt, die neueste unterstützte Version von PHP 7 zu installieren und zu verwenden, um die Leistung zu steigern.
  • Ersetzen Sie Ihre MySQL-Datenbank durch Percona.
  • Stellen Sie sicher, dass Sie PHP OPcache installieren und aktivieren.
  • Xdebug ist standardmäßig deaktiviert. Aktivieren Sie diese Funktion nur, wenn Sie sie benötigen, da sie viel Speicher benötigt und die Leistung beeinträchtigt. Die xdebug.max_nesting_level-Konfiguration muss für Magento auf 200 oder höher festgelegt werden. Sie können den für PHP verfügbaren Speicher erhöhen, um die Leistung bei eingeschaltetem Xdebug zu steigern.
  • Wenn Sie Beispieldaten benötigen, können Sie diese mithilfe von Composer oder durch Klonen von Repositorys installieren.
  • Deaktivieren Sie das Zusammenführen von CSS und JavaScript, um die Front-End-Entwicklung zu beschleunigen.
  • Stellen Sie sicher, dass die Zwischenspeicherung aktiviert ist (dies ist das Standardverhalten). Im Allgemeinen sollten nur der Seiten-Cache und der Block-Cache für die Entwicklung deaktiviert und beim Testen wieder aktiviert werden.
  • Die Validierung des Opcache-Zeitstempels sollte für die Entwicklung immer aktiviert sein. Die Entwicklung ist bei aktiviertem und deaktiviertem Opcache nicht möglich, da jede PHP-Änderung ein Zurücksetzen des Caches erfordern würde.
Ian bei Xantek
quelle
Für mich hat Opcache den Trick gemacht. Es wird jetzt ziemlich schnell geladen.
Amit Singh
Eine andere Sache, auf die ich gestoßen bin, ist, dass Xdebug standardmäßig aktiviert werden kann, was ebenfalls einen Leistungseinbruch zur Folge hat. Prüfen /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Nach dem Wechsel Ich glaube , Sie brauchen den Behälter Docker Neustart {web-container-name} neu zu starten
Ian bei Xantek
1

Schalten Sie Ihren Cache ein.

Gehen Sie zu <your magento 2 directory>/binund führen Sie diesen Befehl aus magento cache:enable.

Leeren Sie den Cache, wenn Sie das Frontend bearbeiten, um zu sehen, was Sie bearbeitet haben.

Gehen Sie zu <your magento 2 directory>/binund führen Sie diesen Befehl aus magento cache:clean.

Meine Referenz

Ich bin auch neu in Magento 2. Ich hoffe, jemand hat eine Möglichkeit, Magento 2 schnell zu machen, auch wenn der Cache deaktiviert ist.

Null
quelle
1
Weiß nicht, ob dies eine praktikable Lösung ist ... Überall heißt es, den Cache im Entwicklungsmodus zu deaktivieren ...
slayerbleast
6
Natürlich, wenn ich den Cache aktiviere, wird die Seite schneller ... aber bei jeder Änderung muss ich den Cache bereinigen ... immer noch eine Zeitverschwendung, denke ich ...
slayerbleast
1

Mein Setup auf Ubuntu 16.10 für die Frontend-Entwicklung für WENIGER Bearbeitungen :

  1. Entwicklermodus einstellen:

    php bin/magento deploy:mode:set developer

  2. Alle Caches aktivieren:

    PHP bin / Magento c: aktivieren

  3. Fronted Development Workflow ist auf Serverseitige Kompilierung eingestellt

  4. Nach Änderungen in weniger Dateien laufen

    grunze sauber

(Letztes Mal habe ich angefangen zu grunzen - schaue mit Live-Browsing und es ist großartig)

BartZalas
quelle
0

Ich möchte nur meine persönlichen Erfahrungen mitteilen. Die Lösung bestand darin, Xampp mit PHP 7.0 zu installieren, da Magento mit einer höheren Version von PHP nicht vollständig kompatibel ist. Ich habe versucht, Bitnami Image als Antwort aufzulisten, aber es hat nicht funktioniert, da ich Xampp 7.0.23 Download Link erwartet habe

user3127648
quelle
"Ja wirklich?" Mit xampp funktioniert das einwandfrei? Ich habe es so oft versucht und es war schrecklich ... Welche Magento-Version? Vielleicht haben sie mit dieser Zeit etwas Leistung verbessert. Ich werde es wieder versuchen. Und warum funktioniert das Bitnami-Image nicht wie erwartet?
Slayerbleast
Ich habe Magento 2.1 und Xampp 7.0 Link oben hinzugefügt, Vergleichen von Bitnami Bild zu Xampp 7.0 Ich fand Xampp einfach und schneller
user3127648
0

Das Erhöhen von PHP memory_limitin der Datei php.ini wird einen großen Unterschied machen. Es macht es jedoch nicht sehr glatt (obwohl es Zeit spart).

Der Standardwert ist 512M. Auf meinem lokalen Rechner stelle ich dies auf "-1" (unbegrenzt) und es ergibt eine bessere Ladezeit.

Der empfohlene Wert ist memory_limit = 2G erwähnt hier .

Magento ist schwer und benötigt leistungsstarke Hardware wie SSD, um flüssig zu sein :(

Binod - GoFundMonica
quelle
memory_limithat keinerlei Bezug zur Leistung. Dies geht aus dem Namen der Richtlinie hervor.
Danila Vershinin
@DanielV. Ich habe mich auch gefragt, aber dann habe ich Folgendes gefunden: devdocs.magento.com/guides/v2.2/install-gde/prereq/… wo 2G als empfohlener Wert steht
Binod - GoFundMonica
1
Auch dies wird aus eigenen Gründen empfohlen. Welche haben absolut keinen Bezug zur Leistung. Die Speicherkapazität beschränkt sich nur darauf, Ihr System nicht vollständig anzuhalten, falls einige PHP-Skripte (oder in diesem Fall Magento-Module) den gesamten Arbeitsspeicher des Servers beanspruchen. Es gibt absolut keine Auswirkungen auf die Leistung, wenn der Wert zu niedrig oder zu hoch eingestellt wird. Es ist einfach eine vorbeugende Anweisung, um das System ausfallsicherer zu machen. Und ich bin überrascht, dass die Leute blindlings davon ausgehen, dass durch diese Direktive mehr Speicherplatz geschaffen wird, um Leistung zu erzielen. Es ist nicht und wird es auch nie sein.
Danila Vershinin
Interessanter Punkt, Daniel. Das habe ich eigentlich blind vorausgesetzt. Wie können wir das demonstrieren? Gibt es Hinweise, mit denen Sie mich führen können, damit ich das erleben kann?
Binod - GoFundMonica
Wenn Sie es zu niedrig einstellen (z. B. 16 MB, was für M2 sicherlich nicht ausreicht), schlägt PHP mit schwerwiegenden Fehlern fehl. Installieren Sie so viele Module wie möglich und stellen Sie sie zu hoch ein (z. B. 4 GB), und alles läuft in Ordnung, bis Sie wenige weitere Besucher auf der Website haben, was sicher dazu führt, dass Ihr Server den Status "Nicht genügend Arbeitsspeicher" erreicht. Sie brauchen diese Experimente nicht, wenn Sie nur die Dokumente für diese Direktive lesen. PHP läuft die ganze Zeit im Speicher. Es wechselt nicht auf die Festplatte oder macht solche lustigen Dinge.
Danila Vershinin
0

Wenn Sie Probleme beim Einrichten einer Vagrant-Box haben, wird es mit ziemlicher Sicherheit so sein, wie Ihre Ordner freigegeben werden. Sie sollten über NFS gemeinsam genutzt werden.

Nachdem ich mit vielen verschiedenen Boxen rumgespielt hatte, stellte ich fest, dass NFS zwar in der Konfiguration eingestellt war, aber nicht funktionierte und das standardmäßige VirtualBox-Freigabesystem übernahm.

Ich ging zurück zu den Grundlagen und stellte eine einfache LEMP-Box auf und installierte dieses Plugin:

https://github.com/Learnosity/vagrant-nfs_guest

Bestätigt, dass NFS funktioniert und alles in Ordnung ist.

engbmaso
quelle
0

Dinge, die Ihr Magento 2-Setup auf Ihrem lokalen Server oder allgemein auf einer beliebigen Serverumgebung beschleunigen können.

  1. Reduzieren Sie JS und CSS
  2. Verwenden Sie eine Cache-Anwendung wie Redis oder Memcached.
  3. Aktivieren Sie den gesamten von Magento 2 bereitgestellten Cache wie block_html, layout, page_cache usw.
  4. CSS und JS zusammenführen
  5. Aktivieren Sie flache Produkte und Kategorien.

Wenn Sie sich in der Entwicklungsumgebung befinden, leeren Sie nur den erforderlichen Cache, anstatt den gesamten Cache zu leeren, um die vollständige Neuerstellung des Caches zu verhindern.

Sourabh Kumar Sharma
quelle
0

Der Hauptgrund, warum magento2 im Entwicklermodus langsam ist, hängt mit Tausenden von statischen und kompilierten Dateien zusammen, die im laufenden Betrieb generiert werden.

Hierfür gibt es 3 Lösungen:

  • Mounten Sie das gesamte Verzeichnis mit NFS (SSD ist weiterhin erforderlich).

  • Mounten Sie nur das App-Verzeichnis (unabhängig davon, auf welcher Hardware es funktioniert), aber Sie verlieren den Zugriff auf das Verzeichnis / vendor auf Ihrem Host-Computer.

  • Mounten Sie das gesamte Projekt mit rsync und schließen Sie Verzeichnisse aus, in denen Dateien generiert werden (pub / static, generated / code etc ...).

Ich habe das gemacht, probiere es aus: https://github.com/zepgram/magento2-fast-vm/

Benjamin Calef
quelle