J'ai un problème de performances avec Magento 2.1
Dans ma boutique, j'ai 90 000 produits. J'ai ajouté ces produits au savon. Quand j'ai fait cela, il a fallu environ 7 secondes pour chaque article (produit?) (Demande> Réponse). En résumé, il a fallu quelques jours pour lancer tous les produits.
Maintenant, tous les produits sont dans la boutique. Toutes les quelques semaines, je dois mettre à jour certaines choses sur les articles (produits). Quand je recommence avec du savon, cela prend la même durée. Quand je fais des mises à jour, la boutique est inutilisable. Un exemple de demande et de réponse est ici: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz
Mon serveur a un processeur 12 cœurs, 24 Go de RAM et SSD. Son exécutant Ubuntu 16.04 avec Apache2 PHP7-fpm et MYSQL.
Quand je regarde le processus de mise à jour, je vois que 5 cœurs avec MySQL sont à 100% PHP fonctionne un peu et le reste est inactif. Le bélier n'est qu'une petite quantité utilisée, iotop
dit que mon SSD s'ennuie.
J'ai regardé les performances de la base de données et j'ai vu que Magento a lancé dans le processus d'ajout des milliers de commandes à la base de données. Est-ce correct?
Lorsque je le mets à jour avec l'importation Magento CSV, c'est beaucoup plus rapide.
Que puis-je faire pour accélérer ce Magento2? Dans cette situation, il est impossible de bien travailler avec cette boutique.
la source
Réponses:
Importation en masse
la clé est d'utiliser l'importation par lots, comme vous l'avez mentionné vous-même:
Envisagez de repenser votre API SOAP et de la changer en mode en vrac, par exemple, vous pouvez créer un middleware qui acceptera vos données produit et générera un fichier csv qui pourra ensuite être alimenté dans Magento.
Il existe des extensions de tiers qui aident à cela.
Conseils généraux sur les performances
Vous pouvez essayer d'accélérer Magento lui-même, mais vous obtiendrez ~ 1-10% de boost à chaque amélioration, lorsque vous en effectuez plusieurs, l'avantage est multiplié:
Dans le cas où tout ce qui précède est fait et que vous avez besoin de plus de performances:
la source
Le problème ici est que les appels SOAP sont très chers. Si vous lancez une demande SOAP pour ajouter / modifier / supprimer un produit, Magento doit rejoindre un grand nombre de tableaux pour obtenir toutes les informations nécessaires. Ce comportement en combinaison avec PHP lui-même ralentit le nombre de produits ou de données que vous souhaitez traiter.
Magento lui-même recommande un cluster de serveurs à 5 nœuds (1 x DB, 4 x Webserver) pour gérer le trafic.
Je recommanderais une mise à l'échelle horizontale, par exemple avec AWS. Cela pourrait avoir un impact plus important sur votre entreprise, mais à mon humble avis, vous ne pourrez pas modifier Magento pour améliorer ses performances.
Dans AWS, vous devez utiliser la fonctionnalité d'un groupe de mise à l'échelle automatique qui est responsable du nombre de serveurs que vous lancez. Chaque fois que vous ajoutez des données, de nouveaux serveurs se lancent pour gérer la pression. La même chose peut être faite avec AWS RDS (DB Service) très facile et rapide.
Dans le cas où AWS n'est pas une option du tout, vous pouvez essayer de modifier Magento et PHP. Je recommanderais de vérifier les paramètres pour:
la source
Ce lien explique comment modifier l'utilisation de la mémoire MySQL. Étant donné que vous avez tellement de RAM, vous pouvez bénéficier d'allouer plus à MySQL. Cela peut être une solution ($) plus facile et moins coûteuse que la construction d'un serveur de base de données dédié.
Vous pouvez également trouver l'utilitaire MySQL Workbench utile pour vous aider avec ce réglage et également la surveillance de ce que MySQL fait en général. L'utilitaire est créé par Oracle / MySQL; ce n'est pas une application de shareware aléatoire.
la source