Por que o Magento 2 é extremamente lento?

31

Eu usei o Magento 1.9 e estava tudo bem.Não era tão rápido quanto um site joomla simples, mas eu tinha muitos clientes sem nenhum problema.

Agora eu queria atualizar meu site para o Magento 2, comprei um novo host (o mesmo que atualmente tenho) e instalei o Magento 2 sem dados de amostra e é uma dor de usar.Não apenas o administrador, mas a página inicial vazia também leva alguns minutos para carregar e quando tento criar uma conta, recebo o erro "Limite de recursos atingido"

Eu tentei com o Facebook FlashCache, OptimumCache e Cloudflare, mas nada mudou, embora os criadores tenham dito que o Magento 2 é muito mais rápido que a primeira versão.

Gostaria de entender por que eles não conseguem consertá-lo depois de tantos anos e por que tantas pessoas o usam?

Existe alguma maneira de fixá-lo?

ATUALIZAR:

Eu usei o mgt-commerce antes e era incrivelmente rápido, levava menos de 2 segundos para carregar, mas custava muito: AWS Preço + € 199,00

Eles ofereceram php7 / HHVM, verniz, redis, CDN, NGINX por padrão, eu acho que é por isso que foi rápido.

Eu tive que comprar uma conta do Amazon WS, não sei por que acho que meu site foi realmente hospedado pela Amazon.

Estou procurando a mesma velocidade por um preço mais baixo. Um exemplo de provedor VPS.

Eu estava olhando em volta, mas descobri que todos os provedores de hospedagem afirmam ter hospedagem Magento. Siteground, Mochahost, Hostgator, Fastcomet etc.

Talvez haja um provedor de hospedagem que instale esses caches para vencer os concorrentes.

PS: Desculpe, se meu post parece ser bobo para programadores, eu escolheria economia, comércio e marketing na universidade, infelizmente :(

petetcap
fonte
Você pode explicar o que você tentou com o Facebook FlashCache, OptimumCache e Cloudflare, por favor?
Mbalparda
1
Parece que é um problema ambiental. Na minha vm é aberto cms / home page sem FPC <0.1s e com FPC <
0.01s #
desativar css / js fusão lojas> Configuração> Avançado> desenvolvedor ver o meu comentário aqui magento.stackexchange.com/questions/150073/...
Konstantin Gerasimov
2
Estou começando com o M2 e muito frustrado com o desempenho também. Se o seu software exigir mil caches para executar um único usuário, há algo errado. Espero mudar de idéia em breve.
Ricardo Martins
@KAndy você pode escrever o que vm você usa? Se você usa o vagrant, seria possível compartilhar o script de provisionamento? Eu tentei várias VMs, mas todas elas não funcionaram. A instalação do Magento foi bem-sucedida, mas as páginas não são carregadas.
Alan Alan

Respostas:

24

Existem vários recursos disponíveis para melhorar o desempenho do Magento 2 e todos eles estão muito bem documentados.

Modo: Magento 2 introduziu modos, sendo o padrão o mais lento. Experimente o modo de desenvolvedor e sempre execute sua loja ao vivo no modo de produção. Mais informações aqui .

Cache: o verniz é suportado imediatamente , muito fácil de configurar e usar.

Redis: Redis é uma solução opcional de cache de back-end para substituir Zend_Cache_Backend_File, que é usada no Magento 2 por padrão. Pode ser usado para armazenamento de sessão e cache de página.

Memcache: Memcached é um armazenamento de valores-chave na memória para pequenos blocos de dados arbitrários (cadeias de caracteres, objetos) de resultados de chamadas de banco de dados, chamadas de API ou renderização de página. No Magento 2, ele pode ser usado para sessões .

PHP 7: Magento 2 é compatível com o PHP 7 imediatamente. Há muita pesquisa sobre como o PHP 7 afeta o desempenho para sempre.

Este é apenas o começo, você poderá ajustar seu servidor da Web e servidor de banco de dados, mas isso dependerá muito do seu caso de uso específico.

Se você não sabe fazer isso sozinho, existem muitas empresas especializadas em hospedagem Magento.

Para um ambiente de desenvolvimento bastante sólido, minha recomendação pessoal é o Paliarush 'Vagrant ou a VM que recebi do Magento para os cursos. Em breve, haverá uma imagem oficial do docker.

mbalparda
fonte
9

Magento funciona razoavelmente bem, mesmo no modo de desenvolvedor. Porém, ele precisa de alguma configuração inicial.

Primeiro, verifique se o Magento está configurado corretamente, supondo que você esteja no Ubuntu:

Use a versão mais recente, pois o Magento 2.2+ suporta o php 7.1 http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

Se você estiver executando várias versões php, defina 7.1 como padrão via

sudo update-alternatives --set php /usr/bin/php7.1

Para o Magento

  1. Defina como Desenvolvedor se ainda não estiver php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. Verifique se o cache do Magento está ativado

    php -f bin/magento cache:status

Se não estiver ativado (séries de 1s)

php -f bin/magento cache:enable

Ativar empacotamento JS / CSS

Lojas> Configuração> Avançado> Desenvolvedor

* Observe que o item de menu acima é exibido apenas no modo de desenvolvedor

Configurações do modelo

  • Minify HTML = Sim

Configurações de Javascript

  • Mesclar arquivos JS = Sim

  • Ativar empacotamento JS = Sim

  • Minify JS files = Yes

Configurações CSS

  • Mesclar CSS = Sim
  • Minify CSS = Yes

Efectue uma descarga de cache a partir de agora, após cada passo de descarga, esta é a sua linha de base para tentar melhorar o tempo de carregamento.

php -f bin/magento cache:flush

Pacote avançado

Este seria um post em si mesmo, seguindo as orientações do magento devdocs sobre como habilitar isso, isso poderia aumentar ainda mais o carregamento do frontend JS, tornando-o 3x mais rápido.

Use Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

Edite /www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

Use PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

Habilitar opcache no PHP

Edite /etc/php/7.1/apache2/php.ini find opcache.enable

opcache.enable=1

Eu também recomendaria o uso de um banco de dados em nuvem, como o AWS RDS ou outro, para evitar dores de cabeça na configuração do mysql.

Se você agora ativar o modo de produção php -f bin/magento deploy:mode:set production

você deve achar que está funcionando razoavelmente bem.

Indo mais longe daqui, você pode adicionar Varnish, Alterne para Nginx, adicione uma CDN para arquivos estáticos.

Joel Davey
fonte
2

Eu também tive esse problema em um Macbook Pro (final de 2016) com o MAMP.

O que eu queria fazer era criar um tema Magento 2. Eu havia desativado todos os caches e demorou 30 anos para recarregar uma página (front-end e back-end).

Ativei todos os caches com o comando "php magento cache: enable" e o site carrega muito rápido. Ainda posso trabalhar com Grunt e LESS sem desativar nenhum tipo de cache.

Klevis Miho
fonte
1

Magento 2 não é lento por padrão. Você precisa seguir estas etapas para torná-lo mais rápido:

  1. Requisitos de servidor e sistema

  2. Atualizar versão Magento

  3. Ativar cache de verniz

  4. Configurar Memcached

  5. Ativar categorias e produtos simples

  6. Otimize Javascript e CSS

  7. Rede de Entrega de Conteúdo

  8. Usar tema leve

  9. Extensões sem erros

  10. As imagens devem ser totalmente otimizadas

Syed Muneeb Ul Hasan
fonte
22
Sinto muito, mas se você precisar adicionar vários níveis de cache a um aplicativo, então é lento por padrão.
Robert Egginton
Robert: Cara, adicionar cache a várias camadas de um sistema de várias camadas é o tipo certo de arquitetura. Não estamos falando de cache em cache ... -o-
miracules
Usar caches durante o desenvolvimento não é realmente uma solução ideal. Limpar o cache toda vez que uma alteração é feita parece mais com o desenvolvimento em linguagem compilada, não com PHP.
Alan
0

Como você acha que o Magento 2 é lento? Meu site, que usa um tema muito pesado, obtém 93/100 sólidos em velocidade de página e tempo de carregamento de 2 segundos. Eu diria que obtenha um host melhor para o Magento porque o seu servidor da web tem um papel importante no desempenho do seu site. Quanto ao modo "padrão" ser o mais lento, não é verdade. Eu dirigi minha loja no modo padrão até estar pronta para alternar para o modo de produção e ele obteve 91/100 no modo padrão e só foi para 93/100 após mudar para o modo de produção.

Obtenha um host e um servidor da Web melhores se você realmente deseja usar o Magento 2.

James Stubbs
fonte
Após magento cache:disableo tempo de carregamento ser superior a 30 segundos.
Tom Anderson