Pourquoi Magento 2 est extrêmement lent?

31

J'ai utilisé Magento 1.9 et c'était correct, ce n'était pas aussi rapide qu'un simple site joomla mais j'avais de nombreux clients sans problème.

Maintenant, je voulais mettre à niveau mon site vers Magento 2, j'ai acheté un nouvel hôte (identique à celui que j'ai actuellement) et installé Magento 2 sans exemple de données et c'est une douleur à utiliser. Pas seulement l'administrateur, mais la page d'accueil vide prend aussi quelques minutes à charger et lorsque j'essaye de créer un compte, j'obtiens une erreur indiquant que "la limite de ressources est atteinte"

J'ai essayé avec Facebook FlashCache, OptimumCache et Cloudflare mais rien n'a changé même si les créateurs ont dit que Magento 2 est beaucoup plus rapide que la première version.

J'aimerais comprendre pourquoi ils ne peuvent pas le réparer après tant d'années et pourquoi tant de gens l'utilisent?

Y a-t-il un moyen de le fixer?

MISE À JOUR:

J'ai utilisé mgt-commerce avant et c'était incroyablement rapide, il a fallu moins de 2 secondes pour le charger mais cela coûte trop cher: Prix AWS + 199,00 €

Ils ont proposé php7 / HHVM, Varnish, Redis, CDN, NGINX par défaut, je suppose que c'est pourquoi c'était rapide.

J'ai dû acheter un compte Amazon WS, je ne sais pas pourquoi je suppose que mon site était réellement hébergé par Amazon.

Je recherche la même vitesse pour un prix inférieur. Un exemple de fournisseur VPS.

Je regardais autour de moi, mais j'ai trouvé que chaque hébergeur prétend avoir un hébergement Magento. Siteground, Mochahost, Hostgator, Fastcomet etc.

Il y a peut-être un hébergeur qui installerait ces caches pour battre les concurrents.

PS: Désolé si mon message semble stupide pour les programmeurs, je choisirais malheureusement l'économie, le commerce et le marketing à l'université :(

petetcap
la source
Pouvez-vous expliquer ce que vous avez essayé avec Facebook FlashCache, OptimumCache et Cloudflare s'il vous plaît?
mbalparda
1
Ressemble à son problème d'environnement. Sur mon vm, c'est ouvert cms / page d'accueil sans FPC <0,1 s et avec FPC <0,01 s
KAndy
désactiver la fusion css / js des magasins> configuration> avancé> développeur voir mon commentaire ici magento.stackexchange.com/questions/150073/…
Konstantin Gerasimov
2
Je commence avec M2 et je suis très frustré par ses performances également. Si votre logiciel nécessite mille caches pour fonctionner pour un seul utilisateur, il y a un problème. J'espère que je changerai bientôt d'avis.
Ricardo Martins
@KAndy pouvez-vous écrire quel vm utilisez-vous? Si vous utilisez vagrant, serait-il possible de partager le script d'approvisionnement? J'ai essayé plusieurs machines virtuelles mais toutes n'ont pas fonctionné. L'installation de Magento a réussi mais les pages ne se chargent pas.
Alan

Réponses:

24

Il existe plusieurs ressources disponibles pour améliorer les performances de Magento 2 et toutes sont assez bien documentées.

Mode: Magento 2 a introduit des modes, étant celui par défaut le plus lent. Essayez le mode développeur et exécutez toujours votre magasin en direct en mode production. Plus d'infos ici .

Cache: Varnish est pris en charge prêt à l'emploi, assez facile à configurer et à utiliser.

Redis: Redis est une solution de cache backend en option à remplacer Zend_Cache_Backend_File, qui est utilisée par défaut dans Magento 2. Il peut être utilisé pour le stockage de session et la mise en cache des pages.

Memcache: Memcached est un magasin de valeurs-clés en mémoire pour de petits morceaux de données arbitraires (chaînes, objets) à partir des résultats d'appels de base de données, d'appels d'API ou de rendu de page. Dans Magento 2, il peut être utilisé pour des sessions .

PHP 7: Magento 2 est compatible avec PHP 7 prêt à l'emploi. Il existe de nombreuses recherches sur la façon dont PHP 7 affecte les performances pour de bon.

Ce n'est que le début, vous devriez pouvoir affiner votre serveur Web et votre serveur de base de données, mais cela dépendra fortement de votre cas d'utilisation particulier.

Si vous ne savez pas comment le faire vous-même, il existe de nombreuses entreprises spécialisées dans l'hébergement Magento.

Pour un environnement de développement assez solide, ma recommandation personnelle est Vagrant de Paliarush ou la machine virtuelle que j'ai obtenue de Magento pour les cours. Il y aura bientôt une image officielle de docker.

mbalparda
la source
9

Magento fonctionne assez bien même en mode développeur. Il a cependant besoin d'une configuration initiale.

Assurez-vous d'abord que Magento est correctement configuré, en supposant que vous utilisez Ubuntu:

Utilisez la dernière version car Magento 2.2+ prend en charge 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

Si vous exécutez plusieurs versions de php, définissez 7.1 par défaut via

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

Sur Magento

  1. Défini sur Developer si ce n'est déjà fait php -f bin/magento deploy:mode:show

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

  2. Vérifiez que le cache de Magento est activé

    php -f bin/magento cache:status

Si non activé (série de 1)

php -f bin/magento cache:enable

Activer le regroupement JS / CSS

Boutiques> Configuration> Avancé> Développeur

* Notez que l'élément de menu ci-dessus n'apparaît qu'en mode développeur

Paramètres de modèle

  • Réduire HTML = Oui

Paramètres Javascript

  • Fusionner les fichiers JS = Oui

  • Activer le regroupement JS = Oui

  • Réduire les fichiers JS = Oui

Paramètres CSS

  • Fusionner CSS = Oui
  • Réduire CSS = Oui

Effectuez un vidage du cache à partir de maintenant après chaque étape de vidage du cache, c'est votre base de référence pour essayer d'améliorer le temps de chargement.

php -f bin/magento cache:flush

Regroupement avancé

Ce serait un article en soi suivant les directives des développeurs de magento sur la façon d'activer cela, cela pourrait augmenter encore le chargement JS frontal, ce qui le rend 3 fois plus rapide.

Utilisez 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

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

Utilisez 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

Activer opcache en PHP

Modifier /etc/php/7.1/apache2/php.ini trouver opcache.enable

opcache.enable=1

Je recommanderais également d'utiliser une base de données cloud telle que AWS RDS ou autre, cela vous évitera les maux de tête liés à la configuration de mysql.

Si vous activez maintenant le mode production php -f bin/magento deploy:mode:set production

vous devriez trouver qu'il fonctionne assez bien.

En allant plus loin, vous pouvez ajouter du vernis, passer à Nginx ajouter un CDN pour les fichiers statiques.

Joel Davey
la source
2

J'ai aussi eu ce problème sur un Macbook Pro (fin 2016) avec MAMP.

Ce que je voulais faire était de créer un thème Magento 2. J'avais désactivé tous les caches et il a fallu environ 30 secondes pour recharger une page (frontend et backend).

J'ai activé tous les caches avec la commande "php magento cache: enable" et le site se charge très rapidement. Je peux toujours travailler avec Grunt et LESS sans désactiver aucun type de cache.

Klevis Miho
la source
1

Magento 2 n'est pas lent par défaut. Vous devez suivre ces étapes pour le rendre rapide:

  1. Configuration requise pour le serveur et le système

  2. Mettre à jour la version de Magento

  3. Activer le cache de vernis

  4. Configurer Memcached

  5. Activer les catégories et produits plats

  6. Optimiser Javascript et CSS

  7. Réseau de diffusion de contenu

  8. Utiliser un thème léger

  9. Extensions sans bogue

  10. Les images doivent être entièrement optimisées

Syed Muneeb Ul Hasan
la source
22
Je suis désolé, mais si vous devez ajouter plusieurs niveaux de mise en cache à une application, elle est lente par défaut.
Robert Egginton
Robert: Mec, ajouter du cache à plusieurs couches d'un système multicouche est le bon type d'architecture. On ne parle pas cache après cache ... -o-
miracules
L'utilisation de caches pendant le développement n'est pas vraiment une solution optimale. Vider le cache chaque fois qu'un changement est effectué ressemble plus à un développement en langage compilé, pas en PHP.
Alan
0

Comment pensez-vous que Magento 2 est lent? Mon site qui utilise un thème très lourd obtient un solide 93/100 en vitesse de page et les temps de chargement sont de 2 secondes. Je dirais qu'il vaut mieux héberger Magento car votre serveur web joue un grand rôle dans les performances de votre site. Quant au mode "par défaut" étant le plus lent, ce n'est pas vrai du tout. J'ai géré mon magasin en mode par défaut jusqu'à ce que je sois prêt à passer en mode production et il a obtenu un 91/100 en mode par défaut et n'est passé à un 93/100 qu'après être passé en mode production.

Obtenez un meilleur hôte et un meilleur serveur Web si vous voulez vraiment utiliser Magento 2.

James Stubbs
la source
Après magento cache:disablele temps de chargement est supérieur à 30 secondes.
Tom Anderson