Optimiser les performances de Magento

Optimiser les performances de Magento

 

Magento, plate forme ecommerce opensource

Optimiser les performances de Magento Bargento, Paris le 02/02/09 Philippe Humeau (NBS System / Wikigento) Sommaire I. Introduction II. Etat des lieux III. Où se trouve les leviers ? IV. Les méthodes d?optimisation V. Conclusion Introduction Magento répond (indéniablement) à un besoin fonctionnel fort des clients finaux : ?Souplesse de gestion des Produits / Catalogues ?Fonctions très complètes ?Design très varié et agréable ?Basé sur un Framework très fort et pérenne : Zend ?Le créneau était un peu vide depuis OS Commerce ?Magento va s?imposer, c?est logique et mérité, donc il faut que l?on progresse tous sur les performances ! Constats Cette souplesse et ces fonctionnalités ont un coût très fort en terme de ressources : ?Un visiteur « moyen » Magentoïsé coûte 3 à 7 fois plus de ressource CPU / RAM qu?en OS Commerce ?Des goulots d?étranglements sont présents ?Le rendu des pages sur les serveurs Web frontaux ?L?utilisation du B.O tue les performances de la DB ?Certaines fonctions (comparateur produit ?) sont voraces ?Les clients arrivent en « mode panique » Pourquoi ? Les sources de ces maux peuvent se catégoriser : ?La culture du développement ?Les problèmes du Moteur ?L?inadaptation du langage interprété à cet usage ?La standardisation des environnements de hosting ?Les problématiques Hardware ?Mais? Magento est une évolution logique et nécessaire, donc tout le monde va (devoir) s?adapter Comment ? La culture du développement : ?Pas de développement dans son coin sans test ?Pas d?outsourcing à des inconnus (peu compétents) qui écrivent leurs fonctions dans le framework ?Tests de charge, avant la mise en prod, incontournables ?Optimisation de la taille, de la factorisation du code et de l?organisation des séquences de chargements ?Gestion de la taille des contenus (non 30 Mo, même en streaming, ce n?est pas acceptable comme intro Roger) Comment ? Les problèmes du Moteur : ?Question : What is the correct algorithm complexity for a full table search ? ?Answer : Usually N but definitly not ~N² ?« Fragmenter » les produits en de multiples tables complexifie les requêtes alors que cela devrait les simplifier ?Le rendu des pages, le phtml et quelques autres points pourraient bénéficier d?optimisations Comment ? L?inadaptation du langage interprété à cet usage : ?Le compilateur qui « gommait » la lourdeur de l?objet n?est pas là pour jouer son rôle ?Le code PHP / Zend est complexe à « cacher » efficacement ?Le rendu d?une page provoque l?enchainement de 12 à 14 fonctions en cascade ?A chaque requête de page, en dehors des caches Rproxy & Opcode, presque toute la séquence d?interprétation Magento/Zend/PHP est relancée Comment ? La standardisation des environnements de hosting ?Les hébergeurs (pas tous) installent des LAMP par défaut sans les optimiser pour Magento ?Une installation optimale demande de passer du temps à « profiler » le site pour lui donner des réglages spécifiques sur le Rproxy, l?APC cache, les workers apache, le service Mysql etc? ?Toutes les couches comptent: hardware, kernel, service, peering, etc? Si l?une d?elle n?est pas optimisée, on perd en performance Comment ? Les problématiques Hardware : ?La différence de performances entre un Intel Xéon 5440 et un AMD Shanghai 2384, pour un frontal web Magento est de 18% (en faveur de l?AMD) ?La conception et l?utilisation des caches L2/L3 des processeurs récents, notamment multicore, est complexe (false cache sharing par exemple) ?On fait 10 fois mieux avec 8 Go de RAM qu?avec 2 Go, si le système a été conçu pour, vive le « Memory Trade-off » Optimisation Une architecture optimale, c?est un début ! Optimisation More Power ! Optimisation Good CPUs ! Optimisation ?Optimiser le nb de produits/catégories (ne pas faire un produit par longueur de nappe par exemple) ?Utiliser un backend MyISAM pour le BO, split FO/BO ?Utiliser des pages statiques pour la home et les 404 ?Concentrer les JS/CSS en un fichier hors des pages ?Fédérer les .htaccess dans le fichier du Vhost ?Passer PHP en mode fast_cgi ?Mettre à jour régulièrement Magento ?Entre aucune optimisation et « la totale » (HW, soft, conf, code), on obtient un facteur 4 minimum ! Optimisation ?Utiliser APC Code cache et memcached ?Mettre en place un Rproxy ?Passer Mysql en cluster (tout en RAM) Master² ?Eviter de cumuler les fonctions lentes ou consommatrices dans la même page ?Mettre le moins possible d?éléments dynamiques de session dans une page, ou les limiter à un bloc ?Ajuster le cache Mysql (ni trop gros, ni trop petit), 64 Mo pour une petite base, 128 sinon ?Consulter le guide d?optimisation qui arrivera sur Wikigento prochainement, j?ai pas la place ici ;-) Pistes D?un point de vue Système & Réseau, on a pas encore tout tenté : ?Kernel en cache Fully associative et non Direct Map ?Tester les nouveaux I7 ?Séparer les DB pour le Front et le Back office ?Tenter de créer un « compilateur » de site ?Essayer d?autres backends ou d?autres softs de DB ?Etc ? On cherche, on arrête pas ;) Conclusion Nous allons tous progresser : ?Hébergeur spécialisé & optimisé ?L?Opensource doit régler le soucis de l?interprétation récurrente (notamment Zend/PHP) ?La matériel va évoluer, les développeurs aussi, Varien va améliorer aussi ses performances ?Magento va s?imposer, c?est logique et mérité, donc le chemin nécessaire sur les performances sera parcouru par tous, autant être en avance. Philippe Humeau, Directeur Associé Mail : philippe.humeau@nbs-system.com Sylvain Martin, responsable des ventes Mail : sylvain.martin@nbs-system.com Adrien Urban, responsable hébergement Magento Mail : adrien.urban@nbs-system.com NBS System : le premier hébergeur spécialisé Magento MERCI Retrouvez nos conseils, nos articles et nos tuyaux : www.wikigento.fr

Copiez et collez ce code sur vote blog ou votre site
Copy and paste this code into your blog or website

 

Taille (px)

  • 600px large
  • 480px large
  • 400px large
  • Largeur personnalisée

commentaires Commentaires

Se connecter pour commenter ou s'enregistrer ici

Votre commentaire va ˆtre d‚finitivement retir‚