J'essaie de trouver un moyen d'améliorer les performances de Magento lorsque le nombre de sites Web / magasins dépasse 1k, et mon objectif est d'environ 10k. Voici quelques questions; tous les conseils / aides sont extrêmement bienvenus!
L'ajout de nouveaux sites Web / magasins est lent;
Je commente $ this-> cleanModelCache () dans _afterSave () dans Mage_Core_Model_Abstract, et la situation semble meilleure mais ralentit avec l'augmentation du nombre de sites Web / magasins. Et je ne sais pas ce que cela affecterait l'ensemble du système à l'avenir.Les appels Api deviennent lents.
L'un des principaux processus consiste à passer commande; mon modèle personnalisé le traite en traitant certaines données, et essentiellement en utilisant le modèle sales / quote et les modèles sales / service_quote. Le processus commence avec Oauth. Oauth et la commande prennent plus de temps lorsque le nombre de sites Web / magasins augmente et que la consommation de mémoire semble plus importante. Est-ce que cela a quelque chose à voir avec le chargement par Mage du fichier XML de configuration et le fait que les données de configuration augmentent avec le nombre croissant de sites Web?Ouvrir n98-magerun dev: la console prend plus de temps; je n'en connais pas la cause.
L'enregistrement de la configuration à partir du panneau d'administration prend plus de temps; ne sais pas comment l'améliorer.
Est-il possible de reconstruire la façon dont Magento génère et charge les données de configuration pour réduire sa consommation de mémoire? Est-ce l'un des facteurs qui causent des problèmes de performances dans ma situation?
Instance Magento actuelle: Version = Magento EE 1.14.2.4;
Config cache on; autre cache désactivé;
Utilisation de Mysql 5.6 et MongoDB (pour catalog_category_entity, catalog_product_entity, core_website);
nombre de sites Web = nombre de magasins = nombre de vues = 1024;
nombre de produits = 4501;
Merci d'avance à tous!
la source
Réponses:
L'une des raisons pour lesquelles cela devient lent est que la configuration de chaque magasin est dupliquée à partir de / config / website et / config / global et le code pour le faire n'est pas du tout efficace. Tout changement de paramètre peut entraîner plusieurs dizaines de minutes, voire des heures, de performances et de débit réduits. Le rendre plus efficace signifiera essentiellement que Ben Marks vous poursuivra ... et pas dans le bon sens.
SI vous allez suivre cette voie, le plus simple serait d'avoir des installations Magento 10k et d'avoir une sorte de courtier qui délègue les demandes au site Web approprié. Bien que cela dépende, bien sûr, de votre cas d'utilisation réel.
[ajoutée]
Selon le cas d'utilisation, vous pourrez peut-être utiliser des catégories en tant que pseudo magasins. Techniquement, vous pouvez ensuite utiliser la disposition XML pour modifier le thème par magasin. Mais alors vous vous heurteriez à la limitation du paiement. Tous les magasins devraient partager la caisse.
Quoi qu'il en soit, les magasins 10k Magento sont faisables, en ce sens que ce n'est pas impossible. Mais ce sera une route difficile quel que soit le chemin que vous choisirez.
la source
Vous pouvez essayer de pirater le cœur et d'activer les séparations de cache du site Web. Vous pouvez essayer de pirater la base de données et de stocker des informations de configuration en mémoire. Vous pouvez essayer de remplacer le cache de configuration par quelque chose de plus intelligent - par exemple, mettre en cache les informations des fichiers xml [qui sont statiques et s'appliquent à tous les sites Web et magasins] tout en récupérant dynamiquement les données de remplacement.
Je suis un serveur, donc j'irais avec le nettoyage avec la base de données. Surtout que c'est banal à faire.
Si vous contrôlez votre serveur de base de données: renommez la table core_config_data en core_config_data_offline Créez une nouvelle table core_config_data à l'aide du moteur de stockage MEMORY http://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html Copiez toutes les données de core_config_data_offline vers core_config_data
Configurez un travail cron pour vérifier si core_config_data existe, s'il copie toutes les données de là vers core_config_data_offline. Si ce n'est pas le cas, créez-le et copiez tout de core_config_data_offline vers core_config_data
Désactivez le cache de configuration. Avec le cache de configuration activé, vous obtenez uniquement une amélioration des performances pour la première fois que les données de configuration sont lues dans la base de données - après cela, elles sont dans le cache et vous en souffrez. Sur le plan négatif, les fichiers xml ne sont plus mis en cache, vous avez donc échangé le résultat de performance de la désérialisation d'énormes données de configuration pour le résultat de l'analyse d'un groupe de fichiers xml.
Vous pouvez également essayer de modifier le fichier Mage / Core / Model / Config.php et activer les caches de sites Web individuels. Par défaut, chaque donnée de configuration spécifique au magasin est mise en cache individuellement. Toutes les données de configuration du site Web sont mises en cache dans un seul objet.
Notez que ceci est juste pour les remplacements de configuration [les paramètres d'administration]. Donc, si vous effectuez toutes vos modifications de configuration au niveau du magasin, vous êtes déjà défini. Si vous utilisez «hériter du site Web» et que vous effectuez la plupart des modifications de configuration spécifiques à votre magasin au niveau du site, le cache contient chaque site Web. En le divisant, vous pouvez le répartir beaucoup mieux. protected $ _cacheSections = array ('admin' => 0, 'adminhtml' => 0, 'crontab' => 0, 'install' => 0, 'stores' => 1, 'sites Web' => 0);
à
la source