Magento2 funziona così lentamente sullo sviluppo di localhost


25

Di recente ho iniziato a sviluppare nuove estensioni o personalizzazioni di magento2 e la mia prima impressione è stata un incubo. Devo aspettare circa 20-30 secondi per ogni modifica che faccio? veramente?

Sto parlando della modalità di sviluppo , so che in produzione con cache abilitata e altre cose il sito web può essere fluido. Ma quando lavoro con un'estensione o un problema di layout, devo rimuovere i file statici, svuotare la cache, ecc.

La mia domanda è: come funzionano tutti gli sviluppatori M2? perché non credo che devi aspettare 20s-30s per aggiornare la pagina ...

Il mio ambiente: il mio pc è "buono" i5 con 8 GB di RAM. Ho bisogno di lavorare con Windows, quindi uso Vagrant:

  • Utilizzo di tutti e 4 i core della CPU
  • Utilizzare 5120 MB di RAM
  • Ubuntu / trusty64 - Ubuntu 14.04
  • Versione PHP 7.0.12-1 + deb.sury.org ~ fidato + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ fidato
  • Magento 2.1.2 è installato solo con sampledata (non sono installati più moduli)
  • (Chiedimi se vuoi sapere di più)

Cosa sta succedendo esattamente? Di solito M2 risponde bene, lento ma va bene, circa 5-10 secondi per caricare le pagine, ma a volte (più spesso che a volte) rimane bloccato per sempre! a volte è la prima pagina e a volte sono i file css, js, html ma il problema è sempre con TTFB.

Ho visto un problema anche durante l'installazione guidata ... con angular.js questi file durano per sempre ...

Queste 2 immagini riguardano la navigazione all'interno della procedura guidata di configurazione.

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

Poi un altro navigando sul catalogo frontend: http://imgur.com/oXYC52D

Cosa sto chiedendo esattamente? È normale? ragazzi lavorate con questo tempismo? Ho commentato questo con alcuni colleghi e non ci crediamo, devo lavorare così? A volte dispero di aspettare tutto il tempo guardando lo schermo ...

Se qualcuno mi chiede di mostrargli un test, come creare un nuovo prodotto o qualcosa del genere, va fuori di testa ... Crea un nuovo ordine, riempie i campi e ogni campo esegue un js che dura 5-6s ...

Non lo so ma mi sento così male a sviluppare con queste cose ...


Non ho avuto la possibilità di giocare con Magento 2: ma suppongo che la maggior parte dei problemi di prestazioni provenga dal tuo ambiente vagabondo. Usi virtualbox con vagabondo o qualcos'altro. L'uso di più core con virtualbox riduce le prestazioni. Esegui il magento da una cartella condivisa sul vagabondo> magento riscrive i file nella stessa condivisione in cui si verificano problemi di prestazioni.
Olli Tyynelä,

Inoltre potresti anche avere poca memoria sul tuo sistema, il che porta all'utilizzo dello swap sull'host se dai 5gigs vagabondi. aumentare l'importo solo se effettivamente necessario.
Olli Tyynelä,

Una grande parte del tuo problema è che sei su Windows. Sono stato su Windows per anni ed è stato molto lento con il vagabondo / magento. Ciò è dovuto alla modalità di sincronizzazione dei file, non è all'altezza di nfs. Ho iniziato il dual boot nel desktop di Ubuntu e i miei siti di magento sono stati molto veloci, poi un po 'più tardi ho ottenuto un Mac, che utilizza NFS, ed è anche molto veloce.
Shawn Abramson,

Sì, è vagabondo con virtualbox. Perché usare più core deve degradare le prestazioni? Presumo che dare tutte le risorse alla VM possa essere lento "il mio pc" ma più veloce la mia VM ... E la cartella che sto usando è / var / www (ho provato a non usare la cartella condivisa, è solo "linux" ciò che è in esecuzione adesso). Come posso vedere cosa non funziona? Posso eseguire top o comandi del genere .... ma non so come interpretare ...
slayerbleast

@ShawnAbramson Sì ... abbiamo suggerito di installare il dual boot solo per provarlo perché, come ho detto, non crediamo che gli sviluppatori di M2 stiano lavorando come sto attualmente facendo hehe ...
slayerbleast

Risposte:


8

Ho provato di tutto e l'unica cosa che funziona è la macchina virtuale che fornisce bitnami. https://bitnami.com/stack/magento/virtual-machine

Scherzi a parte, non so cosa abbia questo vm, ma va molto veloce. Ho provato a creare la mia VM usando una nuova installazione di Ubuntu, CentOS, ecc. Ma non funziona così bene come questa VM.


Penso che la differenza principale rispetto alle specifiche di questa VM sia memcache? Che, sul mio Windows (almeno su PHP 7, non è possibile)
MackieeE

6

disabilita l'unione e la minimizzazione di CSS / JS:

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

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

Vedi anche questa guida su come migliorare le prestazioni di Magento 2.


1
Le impostazioni predefinite hanno già questi valori. E questo non influisce molto ...
slayerbleast

Quindi l'unione sarebbe utile su un server online? Più costi di elaborazione e non download?
Mohammed Joraid,

Perché dovresti disabilitare CSS / JS Unire e minimizzare, è letteralmente un'opzione lì per aumentare la velocità, questo mi sembra come spararti in un piede
John,

4

Ho scoperto che la modalità sviluppatore disabilita tutto, il che era eccessivo. Ci sono alcuni aspetti che desidero memorizzare nella cache, come la traduzione. Per fortuna env.php, puoi ancora impostare quali cache utilizzare specificamente:

'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,
      ),

Questo è quanto sopra che ho scelto di memorizzare nella cache durante lo sviluppo su Google Checkout, poiché questo era fortemente front-end. Ho scelto di non memorizzare nella cache Layout; Blocchi e Pagina intera per vedere le mie modifiche.


Grazie mille! Ho avuto questo problema, perché ho aggiornato Magento2 a una versione più recente e ho fatto una nuova installazione. Apparentemente stava sovrascrivendo il mio env.php, il che lo rendeva infinitamente lento. Questa correzione a env.php l'ha risolto. Grazie ancora!
codiga

4

Suggerimenti di Magento pubblicati dopo aver risposto a questa domanda. Leggendo altre risposte, penso che queste informazioni possano essere un'aggiunta utile

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

Configurazione ottimale

Di seguito è riportato un elenco di ottimizzazioni che è possibile effettuare sulla macchina di sviluppo locale

  • Magento consiglia di installare e utilizzare l'ultima versione supportata di PHP 7 per aumentare le prestazioni.
  • Sostituisci il tuo database MySQL con Percona.
  • Assicurati di installare e abilitare PHP OPcache.
  • Xdebug è disattivato per impostazione predefinita. Abilita questa funzione solo quando ne hai bisogno perché richiede molta memoria e riduce le prestazioni. La configurazione xdebug.max_nesting_level deve essere impostata su 200 o superiore per Magento. Puoi aumentare la memoria disponibile per PHP per aumentare le prestazioni con Xdebug attivo.
  • Se hai bisogno di dati di esempio, puoi installarli usando il compositore o clonando i repository.
  • Per accelerare lo sviluppo del front-end, disattivare l'unione di CSS e JavaScript.
  • Assicurati che la memorizzazione nella cache sia attivata (questo è il comportamento predefinito). Generalmente, solo la cache delle pagine e la cache dei blocchi devono essere disattivate per lo sviluppo e riattivate durante il test.
  • La convalida data / ora di Opcache deve essere sempre attiva per lo sviluppo. Lo sviluppo è impossibile con opcache attivato e la riconvalida disattivata perché qualsiasi modifica di PHP richiederebbe un ripristino della cache.

Per me Opcache ha fatto il trucco. Il suo caricamento è abbastanza veloce ora.
Amit Singh,

Un'altra cosa che ho riscontrato è che Xdebug può essere abilitato per impostazione predefinita, che ha anche un impatto sulle prestazioni. Controlla /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Dopo aver cambiato, penso che devi riavviare la finestra mobile container riavvio {web-container-name}
Ian at Xantek

1

Attiva la cache.

Vai a <your magento 2 directory>/bined esegui questo comando magento cache:enable.

Pulisci la cache quando modifichi il frontend per vedere cosa hai modificato.

Vai a <your magento 2 directory>/bined esegui questo comando magento cache:clean.

Il mio riferimento

Sono nuovo anche a Magento 2. Spero che qualcuno abbia modo di velocizzare Magento 2 anche quando la cache è disabilitata.


1
Non so se questa è una soluzione praticabile ... Ovunque si dice per disabilitare la cache in modalità di sviluppo ...
slayerbleast

6
Ovviamente se abilito la cache, il sito andrà più veloce ... ma ogni modifica dovrò pulire la cache ... penso che sia ancora una perdita di tempo ...
slayerbleast

1

La mia installazione su Ubuntu 16.10 per lo sviluppo di frontend per modifiche MENO :

  1. Imposta la modalità sviluppatore:

    php bin/magento deploy:mode:set developer

  2. Abilita tutte le cache:

    php bin / magento c: abilita

  3. Flusso di lavoro di sviluppo con frontespizio impostato su Compilazione lato server

  4. Dopo qualsiasi modifica in meno file eseguiti

    grugnito pulito

(L'ultima volta che ho menage per iniziare: grunt watch con navigazione live ed è fantastico)


0

Voglio solo condividere la mia esperienza personale, La soluzione che mi è venuta in mente è stata installare Xampp con php versione 7.0 in quanto Magento non è completamente compatibile con la versione successiva di Php. Ho provato Bitnami Image elencato nella risposta ma non ha funzionato come mi aspettavo Xampp 7.0.23 Download Link


Veramente? Con xampp funziona bene? Ho provato così tante volte ed è stato terribile ... Quale versione di Magento? Forse hanno risolto alcune prestazioni con questa volta. Ci riproverò. E perché l'immagine Bitnami non funziona come previsto?
slayerbleast,

Ho il link Magento 2.1 e Xampp 7.0 aggiunto sopra, confrontando l'immagine Bitnami con Xampp 7.0 ho trovato xampp facile e veloce
user3127648

0

Aumentare PHP memory_limitnel file php.ini farà una buona differenza. Tuttavia non lo renderà molto fluido (anche se farà risparmiare tempo).

Il valore predefinito è 512M. Sul mio computer locale l'ho impostato su "-1" (illimitato) e offre un tempo di caricamento migliore.

Il valore consigliato è memory_limit = 2G menzionato qui .

Magento è pesante e ha bisogno di hardware ad alte prestazioni come SSD per essere fluido :(


memory_limitnon ha alcun rapporto con le prestazioni. È ovvio dal nome della direttiva.
Danila Vershinin,

@DanielV. Mi chiedevo anche questo, ma poi ho trovato questo: devdocs.magento.com/guides/v2.2/install-gde/prereq/… dove si dice 2G come valore raccomandato
Binod - GoFundMonica

1
Ancora una volta, è raccomandato per i suoi motivi. Che non hanno assolutamente alcuna relazione con le prestazioni. Il limite di memoria è lì solo per non arrestare completamente il sistema nel caso in cui alcuni script PHP (o, in questo caso, i moduli Magento) finiscano per consumare tutta la RAM del server. Non c'è assolutamente alcun impatto sulle prestazioni dall'impostazione di un valore troppo basso o troppo alto. È semplicemente una direttiva preventiva per rendere il sistema più sicuro. E sono sorpreso che la gente presuma ciecamente che dare più memoria perché ciò significhi ottenere prestazioni attraverso questa direttiva. Non lo è e non lo sarà mai.
Danila Vershinin,

Punto interessante, Daniel. In realtà lo pensavo ciecamente. Come possiamo dimostrarlo? Qualche suggerimento che puoi guidarmi in modo che io possa sperimentarlo?
Binod - GoFundMonica

Impostalo troppo basso (es. 16 MB che non è sicuramente sufficiente per M2) e il PHP fallirà con un errore fatale. Installa il maggior numero di moduli possibile e impostalo su un valore troppo alto (ad es. 4 GB) e le cose funzioneranno correttamente fino a quando non avrai pochi visitatori del sito che sicuramente faranno sì che il tuo server raggiunga lo stato di Memoria esaurita. Non hai bisogno di questi esperimenti se leggi i documenti per quella direttiva. PHP funziona sempre in memoria. Non si scambia su disco o fa cose divertenti del genere.
Danila Vershinin,

0

Se hai problemi con la configurazione su una scatola di Vagrant, sarà quasi sicuramente il modo in cui le tue cartelle saranno condivise. Dovrebbero essere condivisi su NFS.

Dopo aver pasticciato con molte scatole diverse, mi sono reso conto che sebbene avessi impostato NFS nella configurazione, in realtà non funzionava e il sistema di condivisione VirtualBox standard stava prendendo il sopravvento.

Sono tornato alle origini e ho impostato una semplice scatola LEMP e installato questo plugin:

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

Confermato che NFS funzionava e tutto andava bene.


0

Cose che possono velocizzare la configurazione di Magento 2 sul server locale o in generale su qualsiasi ambiente server.

  1. Minimizza JS e CSS
  2. Utilizzare un'applicazione di memorizzazione nella cache come Redis o Memcached.
  3. Abilita tutta la cache come block_html, layout, page_cache ecc. Fornita da Magento 2.
  4. Unisci CSS e JS
  5. Abilita prodotti e categorie piatti.

Ora, durante l'ambiente di sviluppo, svuota solo la cache necessaria invece di svuotare l'intera cache per impedire la ricostruzione completa della cache.


0

Il motivo principale per cui magento2 è lento in modalità sviluppatore è legato a migliaia di file statici e compilati generati al volo.

Ci sono 3 soluzioni per questo:

  • Montare l'intera directory con NFS (SSD è ancora obbligatorio).

  • Montare solo la directory dell'app (chiunque l'hardware funzioni correttamente) ma si perde l'accesso alla directory / vendor sul computer host.

  • Montare l'intero progetto con rsync ed escludere le directory in cui vengono generati i file (pub / static, generate / code ecc ...).

L'ho fatto funzionare, provalo: https://github.com/zepgram/magento2-fast-vm/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.