Estou com um problema de desempenho com o Magento 2.1
Na minha loja, tenho 90.000 produtos. Eu adicionei esses produtos ao sabão. Quando fiz isso, foram necessários cerca de 7 segundos para cada artigo (produto?) (Solicitação> Resposta). Em resumo, demorou alguns dias para iniciar todos os produtos.
Agora todos os produtos estão na loja. Todas as semanas eu tenho que atualizar algumas coisas nos artigos (produtos). Quando eu faço isso com sabão novamente, leva a mesma duração. Quando atualizo, a loja fica inutilizável. Um exemplo de solicitação e resposta está aqui: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz
Meu servidor possui uma CPU de 12 núcleos, 24 GB de RAM e SSD. Está rodando Ubuntu 16.04 com Apache2 PHP7-fpm e MYSQL.
Quando assisto ao processo de atualização, vejo que 5 núcleos com MySQL estão 100% PHP trabalhando um pouco e o restante está ocioso. A ram é apenas uma pequena quantidade usada iotop
diz que meu SSD está entediado.
Eu assisti o desempenho do banco de dados e vi que o Magento disparou no processo de adição milhares de comandos ao banco de dados. Isso está bom?
Quando eu atualizá-lo com a importação do Magento CSV, é muito mais rápido.
O que posso fazer para acelerar este Magento2? Nesta situação, é impossível trabalhar bem com esta loja.
fonte
Respostas:
Importação em massa
a chave é usar a importação em lote, como você mencionou:
Considere repensar sua API SOAP e alterá-la para um modo em massa, por exemplo, você pode criar um middleware que aceite os dados do seu produto e gere um arquivo csv que posteriormente será alimentado no Magento.
Existem algumas extensões de terceiros que ajudam com isso.
Conselhos gerais de desempenho
Você pode tentar acelerar o próprio Magento, mas obterá de 1 a 10% de aumento a cada aprimoramento. Quando você faz várias delas, o benefício é multiplicado:
Caso todas as opções acima estejam concluídas e você precise de mais desempenho:
fonte
O problema aqui é que as chamadas SOAP são muito caras. Se você iniciar uma solicitação SOAP para adicionar / editar / excluir um produto, o Magento precisará se juntar a muitas tabelas para obter todas as informações necessárias. Esse comportamento em combinação com o próprio PHP torna lento o número de produtos ou dados que você deseja processar.
O próprio Magento recomenda um cluster de servidores de 5 nós (1 x DB, 4 x Webserver) para lidar com o tráfego.
Eu recomendaria o dimensionamento horizontal, por exemplo, com a AWS. Isso pode ter um impacto maior nos seus negócios, mas IMHO você não poderá ajustar o Magento para ter um desempenho melhor.
Na AWS, você deve usar o Recurso de um grupo de dimensionamento automático responsável pelo número de servidores que você inicia. Sempre que você adiciona os dados, há novos servidores sendo iniciados para lidar com a pressão. O mesmo pode ser feito com o AWS RDS (DB Service) com muita facilidade e rapidez.
Caso a AWS não seja uma opção, tente ajustar o Magento e o PHP. Eu recomendaria verificar as configurações para:
fonte
Este link explica como ajustar o uso de memória do MySQL. Como você possui muita RAM, pode se beneficiar da alocação de mais no MySQL. Essa pode ser uma solução mais fácil e menos dispendiosa ($) que cria um servidor de banco de dados dedicado.
Além disso, você pode encontrar o utilitário MySQL Workbench útil para ajudá-lo com esses ajustes e também monitorar o que o MySQL está fazendo em geral. O utilitário é feito pelo Oracle / MySQL; Não é um aplicativo shareware aleatório.
fonte