Perché Magento 2 è estremamente lento?


31

Ho usato Magento 1.9 ed è andato tutto bene. Non è stato veloce come un semplice sito joomla ma ho avuto molti clienti senza problemi.

Ora volevo aggiornare il mio sito a Magento 2, ho acquistato un nuovo host (lo stesso che ho attualmente) e ho installato Magento 2 senza dati di esempio ed è una fatica da usare. Non solo l'amministratore, ma anche la homepage vuota richiede minuti caricare e quando provo a creare un account ricevo un errore che "Raggiunge il limite di risorse"

Ho provato con Facebook FlashCache, OptimumCache e Cloudflare ma nulla è cambiato, anche se i creatori hanno detto che Magento 2 è molto più veloce della prima versione.

Vorrei capire perché non riescono a risolverlo dopo così tanti anni e perché così tante persone lo usano?

C'è un modo per fissarlo?

AGGIORNARE:

Ho usato prima mgt-commerce ed è stato incredibilmente veloce, ci sono voluti meno di 2 secondi per caricare ma costava troppo: Prezzo AWS + € 199,00

Hanno offerto php7 / HHVM, Varnish, Redis, CDN, NGINX di default, credo sia per questo che è stato veloce.

Ho dovuto acquistare un account Amazon WS, non so perché immagino che il mio sito sia stato effettivamente ospitato da Amazon.

Sto cercando la stessa velocità a un prezzo inferiore. Un esempio di provider VPS.

Mi guardavo intorno ma ho scoperto che ogni provider di hosting afferma di avere Magento hosting. Siteground, Mochahost, Hostgator, Fastcomet ecc.

Forse c'è un provider di hosting che installerebbe queste cache per battere i concorrenti.

PS: Scusa se il mio post sembra essere sciocco per i programmatori, sfortunatamente sceglierei economia, commercio e marketing all'università :(


Puoi spiegare cosa hai provato con Facebook FlashCache, OptimumCache e Cloudflare per favore?
mbalparda,

1
Sembra che sia un problema ambientale. Sulla mia vm è aperto cms / home page senza FPC <0.1s e con FPC <0.01s
KAndy

disabilita css / js unione negozi> configurazione> avanzato> sviluppatore vedi il mio commento qui magento.stackexchange.com/questions/150073/…
Konstantin Gerasimov

2
Sto iniziando con M2 e sono anche molto frustrato dalle sue prestazioni. Se il tuo software richiede l'esecuzione di mille cache per un singolo utente, c'è qualcosa che non va. Spero di cambiare presto idea.
Ricardo Martins,

@KAndy puoi scrivere quale vm usi? Se usi Vagrant sarebbe possibile condividere lo script di provisioning? Ho provato diverse macchine virtuali, ma tutte non hanno funzionato. L'installazione di Magento ha esito positivo ma le pagine non vengono caricate.
Alan,

Risposte:


24

Ci sono più risorse disponibili per migliorare le prestazioni di Magento 2 e tutte sono abbastanza ben documentate.

Modalità: Magento 2 ha introdotto le modalità, essendo quella predefinita la più lenta. Prova la modalità sviluppatore ed esegui sempre il tuo negozio live in modalità produzione. Maggiori informazioni qui .

Cache: Varnish è supportato e pronto all'uso, abbastanza facile da configurare e utilizzare.

Redis: Redis è una soluzione cache back-end opzionale da sostituire Zend_Cache_Backend_File, che viene utilizzata in Magento 2 per impostazione predefinita. Può essere utilizzato per l'archiviazione della sessione e la memorizzazione nella cache delle pagine.

Memcache: Memcached è un archivio di valori-chiave in memoria per piccoli blocchi di dati arbitrari (stringhe, oggetti) dai risultati di chiamate al database, chiamate API o rendering della pagina. In Magento 2 può essere utilizzato per le sessioni .

PHP 7: Magento 2 è compatibile con PHP 7 pronto all'uso. Esistono molte ricerche su come PHP 7 influenzi le prestazioni per sempre.

Questo è solo l'inizio, dovresti essere in grado di ottimizzare il tuo server web e il server di database, ma ciò dipenderà fortemente dal tuo caso d'uso specifico.

Se non sai come farlo da solo, ci sono molte aziende specializzate nell'hosting Magento.

Per un ambiente di sviluppo abbastanza solido la mia raccomandazione personale è Palagrush 'Vagrant o la VM che ho ricevuto da Magento per i corsi. È in arrivo un'immagine docker ufficiale.


9

Magento funziona abbastanza bene anche in modalità sviluppatore. Tuttavia ha bisogno di una configurazione iniziale.

Innanzitutto assicurati che Magento sia impostato correttamente, supponendo che tu sia su Ubuntu:

Usa l'ultima build in quanto Magento 2.2+ supporta php 7.1 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

Se esegui più versioni php imposta 7.1 come predefinito tramite

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

Onto Magento

  1. Impostare su Sviluppatore se non già php -f bin/magento deploy:mode:show

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

  2. Verifica che la cache di Magento sia abilitata

    php -f bin/magento cache:status

Se non abilitato (serie di 1)

php -f bin/magento cache:enable

Abilita raggruppamento JS / CSS

Negozi> Configurazione> Avanzate> Sviluppatore

* Nota: la voce di menu precedente viene visualizzata solo in modalità sviluppatore

Impostazioni modello

  • Minimizza HTML = Sì

Impostazioni Javascript

  • Unisci file JS = Sì

  • Abilita bundle JS = Sì

  • Minimizza file JS = Sì

Impostazioni CSS

  • Unisci CSS = Sì
  • Minimizza CSS = Sì

Esegui uno svuotamento della cache da qui in poi dopo ogni passaggio svuota la cache, questa è la tua base per cercare di migliorare il tempo di caricamento.

php -f bin/magento cache:flush

Bundling avanzato

Questo sarebbe un post in sé seguire le linee guida dei devdocs magento su come abilitarlo, questo potrebbe aumentare ulteriormente il caricamento JS frontend rendendolo 3 volte più veloce.

Usa 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

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

Usa 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

Abilita opcache in PHP

Modifica /etc/php/7.1/apache2/php.ini trova opcache.enable

opcache.enable=1

Consiglierei anche di utilizzare un Cloud DB come AWS RDS o altro che ti farà risparmiare il mal di testa della configurazione di mysql.

Se ora abiliti la modalità di produzione php -f bin/magento deploy:mode:set production

dovresti trovare che funziona abbastanza bene.

Andando oltre da qui è possibile aggiungere Varnish, passare a Nginx aggiungere un CDN per i file statici.


2

Ho avuto questo problema anche su un Macbook Pro (fine 2016) con MAMP.

Quello che volevo fare era creare un tema Magento 2. Avevo disattivato tutte le cache e mi ci sono voluti circa 30 secondi per ricaricare una pagina (frontend e backend).

Ho attivato tutte le cache con il comando "php magento cache: enable" e il sito si carica molto velocemente. Posso ancora lavorare con Grunt e LESS senza disattivare alcun tipo di cache.


1

Magento 2 non è lento per impostazione predefinita. Devi seguire questi passaggi per renderlo veloce:

  1. Requisiti del server e del sistema

  2. Aggiorna la versione di Magento

  3. Abilita Varnish Cache

  4. Configura Memcached

  5. Abilita categorie e prodotti piatti

  6. Ottimizza Javascript e CSS

  7. Rete di distribuzione dei contenuti

  8. Usa un tema leggero

  9. Estensioni senza errori

  10. Le immagini dovrebbero essere completamente ottimizzate


22
Mi dispiace, ma se devi aggiungere più livelli di memorizzazione nella cache a un'applicazione, per impostazione predefinita è lento.
Robert Egginton,

Robert: Amico, aggiungere cache a più livelli di un sistema a più livelli è il giusto tipo di architettura. Non stiamo parlando di cache su cache ... -o-
miracules,

L'uso della cache durante lo sviluppo non è in realtà una soluzione ottimale. Svuotare la cache ogni volta che viene apportata una modifica sembra più simile allo sviluppo in un linguaggio compilato, non in PHP.
Alan,

0

Come pensi che Magento 2 sia lento? Il mio sito che utilizza un tema molto pesante ottiene un solido 93/100 in Velocità pagina e i tempi di caricamento sono di 2 secondi. Direi di avere un host migliore per Magento perché il tuo server web gioca un ruolo importante nelle prestazioni del tuo sito. Per quanto riguarda la modalità "predefinita", la più lenta non è affatto vera. Ho gestito il mio negozio in modalità predefinita fino a quando non ero pronto per passare alla modalità di produzione e ha segnato un 91/100 in modalità predefinita e sono passato a un 93/100 solo dopo il passaggio alla modalità di produzione.

Ottieni un host migliore e un web server migliore se vuoi davvero usare Magento 2.


Dopo che magento cache:disableil tempo di caricamento è superiore a 30 secondi.
Tom Anderson,
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.