Magento2 rodando tão devagar no desenvolvimento de host local


25

Recentemente, comecei a desenvolver novas extensões ou personalizações no magento2, e minha primeira impressão foi um pesadelo. Eu tenho que esperar cerca de 20 a 30 anos para cada mudança que eu fizer? mesmo?

Estou falando do modo de desenvolvimento , sei que na produção com cache ativado e outras coisas, o site pode ser tranquilo. Mas quando estou trabalhando com um problema de extensão ou layout, preciso remover arquivos estáticos, limpar o cache etc.

Minha pergunta é: como todos os desenvolvedores M2 trabalham? porque eu não acredito que você precise esperar entre 20 e 30 anos para atualizar a página ...

Meu ambiente: Meu pc é "bom" i5 com 8gb de RAM. Preciso trabalhar com o Windows para usar o vagrant:

  • Uso de todos os CPU de 4 núcleos
  • Use 5120MB de RAM
  • Ubuntu / trusty64 - Ubuntu 14.04
  • Versão do PHP 7.0.12-1 + deb.sury.org ~ trusty + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ confiável
  • Magento 2.1.2 é instalado apenas com dados de amostra (não há mais módulos instalados)
  • (Pergunte-me se você quer saber mais)

O que está acontecendo exatamente? Normalmente, o M2 responde bem, devagar, mas tudo bem, cerca de 5 a 10s para carregar as páginas, mas às vezes (mais do que às vezes), ele fica preso para sempre! às vezes é a primeira página e às vezes os arquivos css, js, html, mas sempre o problema é com TTFB.

Também vi um problema no assistente de configuração ... com angular.js, esses arquivos duram para sempre ...

Estas duas imagens são sobre a navegação no assistente de configuração.

http://imgur.com/Izoyuhj http://imgur.com/Vs5q8eT

Em seguida, outro navegando no catálogo de front-end: http://imgur.com/oXYC52D

O que estou perguntando exatamente? Isso é normal? vocês trabalham com esse tempo? Comentei isso com alguns colegas e simplesmente não acreditamos, tenho que estar trabalhando assim? Às vezes me desespero de esperar o tempo todo assistindo a tela ...

Se alguém me pede para lhe mostrar um teste, como criar um novo produto ou algo parecido, ele apenas enlouquece ... Criar um novo pedido, preencher os campos e cada campo executa um js que dura de 5 a 6s ...

Eu não sei, mas me sinto tão mal por desenvolver essas coisas ...


Não tive a chance de jogar com o magento 2: mas eu assumo que a maioria dos problemas de desempenho vem do seu ambiente vagante. Você usa o virtualbox com vagrant ou outra coisa? O uso de vários núcleos com o virtualbox diminui o desempenho. Você executa o magento a partir de uma pasta compartilhada no vagrant> magento grava arquivos de volta para o mesmo compartilhamento em que você obtém problemas de desempenho.
Olli Tyynelä

Além disso, você também pode estar ficando sem memória no seu sistema, o que leva ao uso de swap no host, se você der os vagantes 5gigs. apenas aumente a quantidade se você realmente precisar.
Olli Tyynelä

Uma grande parte do seu problema é que você está no Windows. Eu estava no Windows há anos e era super lento com o vagrant / magento. Isso ocorre devido ao modo de sincronização de arquivos, que não se compara ao nfs. Comecei a inicialização dupla no desktop Ubuntu e meus sites magento eram muito rápidos; depois, um tempo depois, adquiri um mac, que usa NFS, e também é muito rápido.
Shawn Abramson

Sim, é vagante com o virtualbox. Por que usar mais núcleos precisa degradar o desempenho? Eu suponho que dar todos os recursos à VM seja lento "meu pc", mas mais rápido minha VM ... E a pasta que estou usando é / var / www (tentei não usar pasta compartilhada, é apenas "linux" o que está sendo executado agora). Como posso ver o que está falhando? Posso executar top, ou comandos como que .... mas não sei como interpretar ...
slayerbleast

@ShawnAbramson Yep ... sugerimos a instalação dual boot só para experimentar, porque como eu disse não acreditamos desenvolvedores M2 estão trabalhando como eu estou fazendo atualmente hehe ...
slayerbleast

Respostas:


8

Eu tentei de tudo e a única coisa que funciona é a máquina virtual que fornece bitnami. https://bitnami.com/stack/magento/virtual-machine

Sério, eu não sei o que tem essa vm, mas vai muito rápido. Tentei criar minha VM usando uma nova instalação do Ubuntu, CentOS, etc. Mas não funciona tão bem como esta VM.


Eu acho que a principal diferença para as especificações desta VM é memcache? O que, no meu Windows (pelo menos no PHP 7, não é possível) #
MackieeE

6

desative a mesclagem e minificação de CSS / JS:

Stores > Configuration > CSS Settings (Javascript Settings) > Merge CSS (Merge JS) > NO

Stores > Configuration > CSS Settings (Javascript Settings) > Minify CSS (Minify JS) > NO

Consulte também este guia sobre como melhorar o desempenho do Magento 2.


1
As configurações padrão já possuem esses valores. E isso não afeta tanto ...
slayerbleast

Então, a fusão seria útil em um servidor online? Mais sobrecarga no processamento e não no download?
Mohammed Joraid

Por que você desativado CSS / JS Fusão e minifying, é literalmente uma opção lá para aumentar a velocidade, isto parece-me como atirar no próprio pé
John

4

Descobri que o modo de desenvolvedor desabilita tudo - que foi um exagero. Há certos aspectos que desejo armazenar em cache, como tradução. Felizmente, env.phpvocê ainda pode definir quais caches usar especificamente:

'cache_types' => 
      array (
        'config' => 1,
        'layout' => 0,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 0,
        'eav' => 1,
        'customer_notification' => 1,
        'target_rule' => 1,
        'full_page' => 0,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'translate' => 1,
        'config_webservice' => 1,
        'compiled_config' => 1,
      ),

Foi o que eu escolhi para armazenar em cache durante o desenvolvimento no Google Checkout, pois esse era um front-end fortemente. Eu escolhi não armazenar em cache o Layout; Blocos e Página inteira para ver minhas alterações.


Graças um milhão! Eu tive esse problema, porque atualizei o Magento2 para uma versão mais recente e fiz uma nova instalação. Aparentemente, estava sobrescrevendo meu env.php, o que o tornava infinitamente lento. Esta correção para env.php corrigiu. Obrigado novamente!
codiga

4

Sugestões de Magento postadas após esta pergunta ser respondida. Lendo outras respostas, acho que essas informações podem ser uma adição útil

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-environment.html

Configuração ideal

A seguir, é apresentada uma lista de otimizações que você pode fazer em sua máquina de desenvolvimento local

  • O Magento recomenda instalar e usar a versão mais recente suportada do PHP 7 para aumentar o desempenho.
  • Substitua seu banco de dados MySQL pelo Percona.
  • Certifique-se de instalar e ativar o PHP OPcache.
  • O Xdebug está desativado por padrão. Ative esse recurso apenas quando necessário, pois requer muita memória e prejudica o desempenho. A configuração xdebug.max_nesting_level precisa ser definida como 200 ou superior para o Magento. Você pode aumentar a memória disponível no PHP para obter um aumento no desempenho com o Xdebug ativado.
  • Se você precisar de dados de amostra, poderá instalá-los usando o compositor ou clonando repositórios.
  • Para acelerar o desenvolvimento do front end, desative a mesclagem de CSS e JavaScript.
  • Verifique se o cache está ativado (esse é o comportamento padrão). Geralmente, apenas o cache da página e o cache do bloco devem ser desativados para desenvolvimento e ativados novamente durante o teste.
  • A validação do carimbo de data / hora do Opcache sempre deve estar ativada para desenvolvimento. O desenvolvimento é impossível com o opcache ativado e a revalidação desativada, pois qualquer modificação do PHP exigiria uma redefinição de cache.

Para mim, o Opcache fez o truque. Está carregando muito rápido agora.
Amit Singh

Outra coisa que encontrei é o Xdebug que pode ser ativado por padrão, o que também tem um impacto no desempenho. Verifique /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Depois de alterar, acho que você precisa reiniciar o reinício da janela de encaixe do contêiner {web-container-name}
Ian no Xantek

1

Ligue o seu cache.

Vá para <your magento 2 directory>/bine execute este comando magento cache:enable.

Limpe o cache ao editar o frontend para ver o que você editou.

Vá para <your magento 2 directory>/bine execute este comando magento cache:clean.

Minha referência

Também sou novo no magento 2. Espero que alguém tenha uma maneira de acelerar o magento 2 mesmo quando o cache estiver desativado.


1
Não sei se esta é uma solução viável ... Em todos os lugares ele diz para desativar cache no modo de desenvolvimento ...
slayerbleast

6
Claro, se eu ativar o cache, o site vai mais rápido ... mas cada mudança que terá que limpar o cache ... ainda um desperdício de tempo eu acho ...
slayerbleast

1

Minha instalação no Ubuntu 16.10 para desenvolvimento de front-end para edições LESS :

  1. Defina o modo Desenvolvedor:

    php bin/magento deploy:mode:set developer

  2. Ative todos os caches:

    php bin / magento c: ativar

  3. Fluxo de trabalho de desenvolvimento fronteado definido para compilação do lado do servidor

  4. Após qualquer alteração em menos arquivos, execute

    grunhido limpo

(Última vez em que eu começo - assista com uma navegação ao vivo e é ótimo)


0

Só quero compartilhar minha experiência pessoal. A solução que eu vim foi instalar o Xampp com a versão 7.0 do php, pois o Magento não é totalmente compatível com a versão superior do Php. Tentei Bitnami Image listado na resposta, mas não funcionou como eu esperava Xampp 7.0.23 Download Link


Sério? Com xampp está funcionando bem? Eu tentei tantas vezes e foi terrível ... Qual versão do Magento? Talvez eles consertem algum desempenho com esse tempo. Vou tentar de novo E por que a imagem Bitnami não está funcionando como o esperado?
Slayerbleast 25/09/19

Eu tenho Magento 2.1 e Xampp 7,0 link adicionado acima, comparando imagem BitNami para Xampp 7.0 i encontrado xampp fácil e mais rápido
user3127648

0

Aumentar o PHP memory_limitno arquivo php.ini fará uma boa diferença. No entanto, não o tornará muito suave (embora economize tempo).

O valor padrão é 512M. Na minha máquina local, defino isso em "-1" (ilimitado) e isso proporciona um melhor tempo de carregamento.

O valor recomendado é memory_limit = 2G mencionado aqui .

O Magento é pesado e precisa de hardware de alto desempenho como o SSD para ser suave :(


memory_limitnão tem relação alguma com o desempenho. É óbvio pelo nome da diretiva.
Danila Vershinin

@DanielV. Eu também estava pensando sobre isso, mas então eu encontrei o seguinte: devdocs.magento.com/guides/v2.2/install-gde/prereq/… onde diz 2G como valor recomendado
Binod - GoFundMonica

1
Novamente, é recomendado por seus próprios motivos. Que não têm absolutamente nenhuma relação com o desempenho. O limite de memória existe apenas para não interromper completamente o sistema, caso alguns scripts PHP (ou neste caso, módulos Magento) acabem consumindo toda a RAM do servidor. Não há absolutamente nenhum impacto no desempenho ao definir o valor muito baixo ou muito alto. É simplesmente uma diretiva preventiva para tornar o sistema mais seguro. E estou surpreso que as pessoas pensem cegamente que dar mais memória significa que o desempenho é alcançado através desta diretiva. Não é e nunca será.
Danila Vershinin

Ponto interessante, Daniel. Eu assumi cegamente isso, na verdade. Como podemos demonstrar isso? Alguma dica com a qual você pode me orientar para que eu possa experimentar isso?
Binod - GoFundMonica

Defina-o muito baixo (por exemplo, 16 MB, o que certamente não é suficiente para M2) e o PHP falhará com erro fatal. Instale o máximo de módulos possível e defina-o muito alto (por exemplo, 4 GB) e tudo funcionará bem até você receber mais visitantes do site, o que certamente fará com que o servidor atinja o estado de Memória insuficiente. Você não precisa dessas experiências se apenas ler os documentos dessa diretiva. PHP roda na memória o tempo todo. Não troca para o disco ou faz coisas engraçadas assim.
Danila Vershinin

0

Se você estiver com problemas para configurar uma caixa do Vagrant, certamente será como as suas pastas serão compartilhadas. Eles devem ser compartilhados pelo NFS.

Depois de mexer com muitas caixas diferentes, percebi que, embora tivesse definido o NFS na configuração, ele não estava realmente funcionando e o sistema de compartilhamento padrão do VirtualBox estava assumindo o controle.

Voltei ao básico e configurei uma caixa LEMP simples e instalei este plugin:

https://github.com/Learnosity/vagrant-nfs_guest

O NFS confirmado estava funcionando e tudo estava bem.


0

Coisas que podem tornar sua configuração do Magento 2 rápida no servidor local ou em geral em qualquer ambiente de servidor.

  1. Minimizar JS e CSS
  2. Use um aplicativo de cache como Redis ou Memcached.
  3. Ative todo o cache, como block_html, layout, page_cache, etc, fornecido pelo Magento 2.
  4. Mesclar CSS e JS
  5. Ative produtos e categorias simples.

Agora, quando estiver no ambiente de desenvolvimento, limpe apenas o cache necessário em vez de liberar todo o cache para impedir a reconstrução completa do cache.


0

A principal razão pela qual o magento2 é lento no modo desenvolvedor está relacionado a milhares de arquivos estáticos e compilados gerados em tempo real.

Existem 3 soluções para isso:

  • Monte o diretório inteiro com o NFS (o SSD ainda é obrigatório).

  • Monte apenas o diretório do aplicativo (seja qual for o seu hardware, ele funcionará bem), mas você perderá o acesso ao diretório / vendor na sua máquina host.

  • Monte o projeto inteiro com o rsync e exclua os diretórios onde os arquivos são gerados (pub / estático, gerado / código etc ...).

Eu fiz esse trabalho, tente: https://github.com/zepgram/magento2-fast-vm/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.