Estou tentando encontrar uma maneira de melhorar o desempenho do Magento quando a quantidade de sites / lojas excede 1k e meu objetivo é de 10k. Aqui estão algumas perguntas; quaisquer dicas / ajuda são extremamente bem-vindas!
A adição de novos sites / lojas é lenta;
Comento $ this-> cleanModelCache () em _afterSave () em Mage_Core_Model_Abstract, e a situação parece melhor, mas está ficando mais lenta com o aumento do número de sites / lojas. E não sei o que isso afetaria todo o sistema no futuro.As chamadas da API ficam lentas.
Um dos principais processos é colocar ordem; meu modelo personalizado lida com isso processando alguns dados e usando essencialmente o modelo de vendas / cotação e modelos de vendas / serviço_quote. O processo começa com Oauth. Oauth e a ordem de colocação demoram mais quando o número de sites / lojas aumenta e o consumo de memória parece maior. Isso tem algo a ver com o Mage carregando o xml de configuração e o fato de os dados de configuração aumentarem com o aumento do número de sites?Abrindo o n98-magerun dev: o console está demorando mais; não sei a causa disso.
Salvar a configuração do painel de administração leva mais tempo; não sei como melhorá-lo.
É possível reconstruir a maneira como o Magento gera e carrega dados de configuração para diminuir seu consumo de memória? Esse é um dos fatores que causam problemas de desempenho para minha situação?
Instância atual do Magento: Version = Magento EE 1.14.2.4;
Configurar cache ativado; outro cache desativado;
Usando o Mysql 5.6 e o MongoDB (para catalog_category_entity, catalog_product_entity, core_website);
número de sites = número de lojas = número de visualizações = 1024;
número de produto = 4501;
Obrigado a todos antecipadamente!
fonte
Respostas:
Uma das razões pelas quais fica lento é porque a configuração de cada loja é duplicada em / config / websites e / config / global e o código para fazer isso não é eficiente, no mínimo. Qualquer alteração na configuração pode causar vários minutos, se não horas, de desempenho e taxa de transferência reduzidos. Torná-lo mais eficiente basicamente significa que Ben Marks virá atrás de você ... e não no bom sentido.
Se você for seguir esse caminho, a maneira mais fácil seria ter instalações de 10k Magento e ter algum tipo de corretor que delegue solicitações no site apropriado. Embora, é claro, dependa de qual é o seu caso de uso real.
[adicionado]
Dependendo do caso de uso, você poderá usar categorias como pseudo-armazenamentos. Tecnicamente, você poderia usar o XML do layout para alterar o tema por loja. Mas você teria a limitação do checkout. Todas as lojas precisariam compartilhar o checkout.
De qualquer forma, as lojas 10k Magento são factíveis, pois não são impossíveis. Mas será um caminho difícil, seja qual for o caminho que você escolher.
fonte
Você pode tentar invadir o núcleo e ativar divisões de cache do site. Você pode tentar invadir o banco de dados e armazenar informações de configuração na memória. Você pode tentar substituir o cache de configuração por algo mais inteligente - por exemplo, armazenar em cache as informações dos arquivos xml [que são estáticos e se aplicam a todos os sites e lojas] enquanto recupera os dados de substituição dinamicamente.
Eu sou um servidor, então eu iria mexer com o banco de dados. Especialmente porque é trivial fazer isso.
Se você tiver controle sobre o servidor de banco de dados: Renomeie a tabela core_config_data para core_config_data_offline Crie uma nova tabela core_config_data usando o mecanismo de armazenamento MEMORY http://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html Copie todos os dados de core_config_data_offline para core_config_data
Configure uma tarefa cron para verificar se existe core_config_data, se ele copia todos os dados para core_config_data_offline. Caso contrário, crie-o e copie tudo, de core_config_data_offline para core_config_data
Desligue o cache de configuração. Com o cache de configuração ativado, você obtém apenas um aumento de desempenho pela primeira vez que os dados de configuração são lidos no banco de dados - depois disso, eles estão no cache e você sofre. Por outro lado, os arquivos xml não são mais armazenados em cache; portanto, você trocou o hit de desempenho por desserializar enormes dados de configuração pelo hit de analisar um monte de arquivos xml.
Você também pode experimentar alterar o arquivo Mage / Core / Model / Config.php e ativar caches de sites individuais. Por padrão, cada dado de configuração específico da loja é armazenado em cache individualmente. Todos os dados de configuração do site são armazenados em cache em um objeto.
Observe que isso é apenas para as substituições de configuração [as configurações de administrador]. Portanto, se você fizer todas as alterações de configuração no nível da loja, você já estará definido. Se você usar "herdar do site" e fazer a maioria das alterações específicas na sua loja no nível do site - o cache conterá todos os sites. Ao dividi-lo, você pode quebrá-lo muito melhor. protegido $ _cacheSections = array ('admin' => 0, 'adminhtml' => 0, 'crontab' => 0, 'install' => 0, 'stores' => 1, 'websites' => 0);
para
fonte