Magento2 fonctionne si lentement sur le développement localhost

25

J'ai récemment commencé à développer sur magento2 de nouvelles extensions ou personnalisations, et ma première impression a été un cauchemar. Je dois attendre environ 20-30s pour chaque changement que je fais? vraiment?

Je parle du mode de développement , je sais qu'en production avec le cache activé et d'autres choses, le site Web peut être fluide. Mais lorsque je travaille avec un problème d'extension ou de mise en page, je dois supprimer des fichiers statiques, vider le cache, etc.

Ma question est, comment travaillez-vous tous les développeurs M2? parce que je ne pense pas qu'il faille attendre 20 à 30 pour rafraîchir la page ...

Mon environnement: mon PC est "bon" i5 avec 8 Go de RAM. Je dois travailler avec Windows, donc j'utilise vagrant:

  • Utilisation des 4 cœurs CPU
  • Utilisez 5120 Mo de RAM
  • Ubuntu / trusty64 - Ubuntu 14.04
  • Version PHP 7.0.12-1 + deb.sury.org ~ trusty + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ fidèle
  • Magento 2.1.2 est installé uniquement avec sampledata (plus aucun module n'est installé)
  • (Demandez-moi si vous voulez en savoir plus)

Que se passe-t-il exactement? Habituellement, M2 répond bien, lentement mais bien, environ 5 à 10 secondes pour charger les pages, mais parfois (plus souvent que parfois), il reste bloqué pour toujours! est parfois la première page et parfois les fichiers css, js, html mais toujours le problème est avec TTFB.

J'ai également vu un problème lors de la configuration de l'assistant ... avec angular.js, ces fichiers durent éternellement ...

Ces 2 images concernent la navigation dans l'assistant de configuration.

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

Puis un autre naviguant sur le catalogue frontal: http://imgur.com/oXYC52D

Qu'est-ce que je demande exactement? Est-ce normal? vous travaillez avec ce timing? J'ai commenté cela avec certains collègues et nous ne croyons tout simplement pas, je dois travailler comme ça? Je désespère parfois d'attendre tout le temps en regardant l'écran ...

Si quelqu'un me demande de lui montrer un test, comme créer un nouveau produit ou quelque chose comme ça, il flippe juste ... Créer une nouvelle commande, remplir les champs et chaque champ exécute un js qui dure 5-6s ...

Je ne sais pas mais je me sens tellement mal de développer avec ce genre de choses ...

slayerbleast
la source
Je n'ai pas eu la chance de jouer avec magento 2: mais je suppose que la plupart des problèmes de performances proviennent de votre environnement vagabond. Utilisez-vous virtualbox avec vagrant ou autre chose. L'utilisation de plusieurs cœurs avec virtualbox dégrade les performances. Exécutez-vous le magento à partir d'un dossier partagé sur le vagabond> magento réécrit les fichiers dans le même partage que vous obtenez des problèmes de performances.
Olli Tyynelä
Vous risquez également de manquer de mémoire sur votre système, ce qui conduit à utiliser le swap sur l'hôte si vous donnez 5gigs vagabonds. n'augmentez le montant que si vous en avez réellement besoin.
Olli Tyynelä
Une grande partie de votre problème est que vous êtes sous Windows. J'étais sur Windows depuis des années et c'était super lent avec vagrant / magento. Cela est dû au mode de synchronisation des fichiers, ce n'est pas à la hauteur de nfs. J'ai commencé le double démarrage sur le bureau Ubuntu et mes sites magento étaient très rapides, puis un peu plus tard, j'ai eu un mac, qui utilise NFS, et il est également très rapide.
Shawn Abramson
Oui, c'est vagabond avec virtualbox. Pourquoi utiliser plus de cœurs doit dégrader les performances? Je suppose que donner toutes les ressources à la VM peut être lent "mon PC" mais plus rapide ma VM ... Et le dossier que j'utilise est / var / www (j'ai essayé de ne pas utiliser de dossier partagé, c'est seulement "linux" qui tourne à présent). Comment puis-je voir ce qui échoue? Je peux exécuter top, ou des commandes comme ça .... mais je ne sais pas comment interpréter ...
slayerbleast
@ShawnAbramson Yep ... nous avons suggéré d'installer le double démarrage juste pour l'essayer parce que comme je l'ai dit, nous ne croyons pas que les développeurs M2 fonctionnent comme je le fais actuellement ...
slayerbleast

Réponses:

8

J'ai tout essayé et la seule chose qui fonctionne est la machine virtuelle qui fournit le bitnami. https://bitnami.com/stack/magento/virtual-machine

Sérieusement, je ne sais pas ce qui a ce vm, mais va très vite. J'ai essayé de créer ma machine virtuelle à l'aide d'une nouvelle installation d'Ubuntu, CentOS, etc. Mais cela ne fonctionne pas aussi bien comme cette machine virtuelle.

slayerbleast
la source
Je pense que la principale différence avec la spécification de cette machine virtuelle est memcache? Qui, sur mon Windows (sur PHP 7 au moins, n'est pas possible)
MackieeE
6

désactiver la fusion et la réduction CSS / JS:

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

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

Consultez également ce guide sur la façon d'améliorer les performances de Magento 2.

Konstantin Gerasimov
la source
1
Les paramètres par défaut ont déjà ces valeurs. Et cela n'affecte pas tellement ...
slayerbleast
La fusion serait-elle donc utile sur un serveur en ligne? Plus de frais généraux pour le traitement et non pour le téléchargement?
Mohammed Joraid
Pourquoi voudriez-vous désactiver la fusion et la réduction CSS / JS, c'est littéralement une option pour augmenter la vitesse, cela me semble comme vous tirer une balle dans le pied
Jean
4

J'ai trouvé que le mode développeur désactivait tout - ce qui était exagéré. Il y a certains aspects que je souhaite mettre en cache, comme la traduction. Heureusement, env.phpvous pouvez toujours définir les caches à utiliser spécifiquement:

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

C'est ce qui précède que j'ai choisi de mettre en cache lors du développement sur Checkout, car c'était fortement frontal. J'ai choisi de ne pas mettre en cache la disposition; Blocs et pleine page pour voir mes changements.

MackieeE
la source
Merci mille fois! J'ai eu ce problème, car j'ai mis à niveau Magento2 vers une version plus récente et fait une nouvelle installation. Apparemment, il écrasait mon env.php, ce qui le rendait infiniment lent. Cette correction à env.php l'a corrigé. Merci encore!
codiga
4

Suggestions de Magento postées après réponse à cette question. Lire d'autres réponses Je pense que cette information pourrait être un ajout utile

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

Configuration optimale

Voici une liste des optimisations que vous pouvez effectuer sur votre machine de développement locale

  • Magento recommande d'installer et d'utiliser la dernière version prise en charge de PHP 7 pour augmenter les performances.
  • Remplacez votre base de données MySQL par Percona.
  • Assurez-vous d'installer et d'activer PHP OPcache.
  • Xdebug est désactivé par défaut. N'activez cette fonction que lorsque vous en avez besoin car elle nécessite beaucoup de mémoire et dégrade les performances. La configuration de xdebug.max_nesting_level doit être définie sur 200 ou plus pour Magento. Vous pouvez augmenter la mémoire disponible pour PHP pour obtenir une augmentation des performances avec Xdebug.
  • Si vous avez besoin d'exemples de données, vous pouvez les installer à l'aide de Composer ou en clonant des référentiels.
  • Pour accélérer le développement frontal, désactivez la fusion de CSS et de JavaScript.
  • Assurez-vous que la mise en cache est activée (c'est le comportement par défaut). En règle générale, seuls le cache de pages et le cache de blocs doivent être désactivés pour le développement et réactivés lors des tests.
  • La validation de l'horodatage Opcache doit toujours être activée pour le développement. Le développement est impossible avec opcache activé et la revalidation désactivée car toute modification PHP nécessiterait une réinitialisation du cache.
Ian chez Xantek
la source
Pour moi, Opcache a fait l'affaire. Son chargement est assez rapide maintenant.
Amit Singh
Une autre chose que j'ai rencontrée est que Xdebug peut être activé par défaut, ce qui a également un impact sur les performances. Vérifiez /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Après avoir changé, je pense que vous devez redémarrer le redémarrage du docker de conteneur {web-container-name}
Ian at Xantek
1

Activez votre cache.

Accédez à <your magento 2 directory>/binet exécutez cette commande magento cache:enable.

Nettoyez le cache lorsque vous modifiez le frontend pour voir ce que vous avez modifié.

Accédez à <your magento 2 directory>/binet exécutez cette commande magento cache:clean.

Ma référence

Je suis également nouveau sur magento 2. J'espère que quelqu'un a un moyen de rendre magento 2 rapide même lorsque le cache est désactivé.

Nul
la source
1
Je ne sais pas si c'est une solution viable ... Partout où il est dit de désactiver le cache en mode développement ...
slayerbleast
6
Bien sûr, si j'active le cache, le site ira plus vite ... mais à chaque changement, je
devrai
1

Ma configuration sur Ubuntu 16.10 pour le développement frontal pour les modifications MOINS :

  1. Définir le mode développeur:

    php bin/magento deploy:mode:set developer

  2. Activez tous les caches:

    php bin / magento c: activer

  3. Workflow de développement frontal défini sur la compilation côté serveur

  4. Après toute modification dans moins de fichiers exécutés

    grognement propre

(La dernière fois que je menage pour commencer - montre grognement avec navigation en direct et son grand)

BartZalas
la source
0

Je veux juste partager mon expérience personnelle.La solution que j'ai trouvée était d'installer Xampp avec php version 7.0 car Magento n'est pas entièrement compatible avec la version supérieure de Php. J'ai essayé Bitnami Image répertorié dans la réponse mais ne fonctionne pas car je m'attendais à Xampp 7.0.23 Lien de téléchargement

user3127648
la source
Vraiment? Avec xampp fonctionne bien? J'ai essayé tant de fois et c'était terrible ... Quelle version de Magento? Peut-être qu'ils ont corrigé certaines performances avec cette fois. Je vais essayer de nouveau. Et pourquoi l'image Bitnami ne fonctionne pas comme prévu?
slayerbleast
J'ai le lien Magento 2.1 et Xampp 7.0 ajouté ci-dessus, En comparant l'image Bitnami à Xampp 7.0, j'ai trouvé xampp facile et plus rapide
user3127648
0

Augmenter PHP memory_limitdans le fichier php.ini fera une bonne différence. Cependant, cela ne le rendra pas très très lisse (même si cela fera gagner du temps).

La valeur par défaut est 512M. Sur ma machine locale, je l'ai réglé sur "-1" (illimité) et cela donne un meilleur temps de chargement.

La valeur recommandée est memory_limit = 2G mentionnée ici .

Magento est lourd et a besoin de matériel haute performance comme SSD pour être fluide :(

Binod - GoFundMonica
la source
memory_limitn'a aucun rapport avec les performances. C'est évident d'après le nom de la directive.
Danila Vershinin
@DanielV. Je me posais également des questions à ce sujet, mais j'ai trouvé ceci: devdocs.magento.com/guides/v2.2/install-gde/prereq/… où il est indiqué 2G comme valeur recommandée
Binod - GoFundMonica
1
Encore une fois, il est recommandé pour ses propres raisons. Qui n'ont absolument aucun rapport avec la performance. La limite de mémoire n'est là que pour ne pas arrêter complètement votre système au cas où certains scripts PHP (ou dans ce cas, les modules Magento) finiraient par manger toute la RAM du serveur. Il n'y a absolument aucun impact sur les performances si vous définissez une valeur trop basse ou trop élevée. C'est simplement une directive préventive pour rendre le système plus sûr. Et je suis surpris que les gens supposent aveuglément que donner plus de mémoire signifie que les performances sont atteintes grâce à cette directive. Ce n'est pas et ne le sera jamais.
Danila Vershinin
Point intéressant, Daniel. Je l'ai supposé aveuglément. Comment pouvons-nous le démontrer? Y a-t-il des pointeurs avec lesquels vous pouvez me guider pour que je puisse en faire l'expérience?
Binod - GoFundMonica
Réglez-le trop bas (par exemple 16 Mo, ce qui n'est sûrement pas suffisant pour M2) et le PHP échouera avec une erreur fatale. Installez autant de modules que possible et réglez-le trop haut (par exemple 4 Go) et les choses fonctionneront bien jusqu'à ce que vous obteniez quelques visiteurs de plus sur le site, ce qui fera sûrement que votre serveur atteindra l'état Mémoire insuffisante. Vous n'avez pas besoin de ces expériences si vous lisez simplement les documents de cette directive. PHP fonctionne en mémoire tout le temps. Il ne change pas de disque ou ne fait pas de choses amusantes comme ça.
Danila Vershinin
0

Si vous rencontrez des problèmes de configuration sur une boîte Vagrant, ce sera presque certainement la façon dont vos dossiers seront partagés. Ils doivent être partagés sur NFS.

Après avoir joué avec de nombreuses boîtes différentes, j'ai réalisé que bien que j'aie défini NFS dans la configuration, cela ne fonctionnait pas réellement et le système de partage VirtualBox standard prenait le relais.

Je suis revenu à l'essentiel et j'ai installé une simple boîte LEMP et installé ce plugin:

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

Confirmé que NFS fonctionnait et que tout allait bien.

engbmaso
la source
0

Des choses qui peuvent rendre votre configuration Magento 2 rapide sur votre serveur local ou en général sur n'importe quel environnement de serveur.

  1. Réduisez JS et CSS
  2. Utilisez une application de mise en cache comme Redis ou Memcached.
  3. Activez tout le cache comme block_html, layout, page_cache etc. fourni par Magento 2.
  4. Fusionner CSS et JS
  5. Activez les produits et catégories plats.

Désormais, dans l'environnement de développement, videz uniquement le cache nécessaire au lieu de vider tout le cache pour empêcher la reconstruction complète du cache.

Sourabh Kumar Sharma
la source
0

La principale raison pour laquelle magento2 est lent en mode développeur est liée à des milliers de fichiers statiques et compilés générés à la volée.

Il existe 3 solutions pour cela:

  • Montez tout le répertoire avec NFS (le SSD est toujours obligatoire).

  • Montez uniquement le répertoire de l'application (quel que soit votre matériel, cela fonctionnera correctement), mais vous perdez l'accès au répertoire / vendor sur votre machine hôte.

  • Montez le projet entier avec rsync et excluez les répertoires où les fichiers sont générés (pub / statique, généré / code etc ...).

J'ai fait ce travail, essayez-le: https://github.com/zepgram/magento2-fast-vm/

Benjamin Calef
la source