Tempos de carregamento de página inconsistentes

11

Estou muito perto de concluir um grande projeto de magento e concentrei-me em melhorar a velocidade do magento. Como uma espécie de prefácio, sou mais um desenvolvedor front-end que faz esse grande projeto internamente e descobre as coisas à medida que passo.

Tenho magento de desenvolvimento em um servidor virtual dedicado ao Media Temple com 2 GB de RAM. Recentemente, eu tinha até 600 produtos e cerca de 25 atributos diferentes em cada produto (total de cerca de 300 atributos exclusivos) e talvez 50 categorias. Excluí tudo isso na tentativa de solucionar problemas de velocidade de carga em torno de 15s.

No entanto, meus tempos de carregamento ainda são longos e inconsistentes. Recarrego minha página inicial com o Firebug relatando 500ms para uma resposta, e recarrego imediatamente novamente e ele informa mais de 9s. Isso é um problema do servidor ou algo do próprio Magento? Como faço para testar algo assim?

andyjv
fonte

Respostas:

11

Primeiro, você precisa decidir o que está testando, seja apenas o tempo de renderização do PHP - ou o tempo de carregamento da página no mundo real.

Em qualquer um dos cenários, o uso do firebug não será confiável - já que a sua conexão à Internet pode ser o gargalo ou o motivo da instabilidade.

Tempo de renderização do PHP

Se você está olhando apenas para ver se o tempo de renderização do PHP melhorou / mudou - a maneira mais precisa é usar a saída do criador de perfil Magento.

Em index.php, descomente

Varien_Profiler::enable();

Então em

Admin> Sistema> Configuração> Desenvolvedor

Verifique se o criador de perfil está ativado.

Você terá uma saída tabular na parte inferior de todas as páginas (front-end e back-end), detalhando o tempo de carregamento da página, medido a partir do ponto de Mage::run()início. A primeira linha indicará o tempo total de renderização do PHP (no Mage).

Esse será o número mais preciso em termos de estabelecer se as alterações no PHP estão fazendo diferença no tempo de carregamento da página, sem mencionar que ele identificará qualquer gargalo de desempenho.

Tempo de renderização do servidor Web PHP

O próximo tipo de teste é levar em consideração as despesas gerais do próprio servidor da web (mas não a conectividade de última milha). Portanto, para que este teste seja preciso e não seja influenciado pela própria 'internet' - você deve executá-lo no próprio servidor da web.

Utilizamos nosso próprio utilitário mage-perftest(mais informações podem ser encontradas aqui ) - que podem testar o tempo de renderização puro do PHP, o tempo de carregamento da página no mundo real e até mesmo testes de simultaneidade.

Para testar apenas o tempo de renderização do servidor web PHP, você usaria (substitua a URL de acordo)

./mage-perftest -u me-s1.sonassihosting.com -b

Este teste fornecerá uma análise detalhada do tempo de carregamento da página (apenas para o elemento PHP da página, ignorando JS / CSS / Images). A saída é algo como isto,

Test Summary
============
Total files:              1
Total downloaded:         4K
Avg. page weight:         4.00K

Total time:               0.035s
Min response:             0.035s
Max response:             0.035s
Avg. page response:       0.03s

Concurrency/Repeats:      1
Transactions/s            28.57
Test URL:                 me-s1.sonassihosting.com
Success rate:             1/1 (100.00%)

Tempo de renderização do servidor web do mundo real

O tipo final de teste é o tempo que leva para baixar a página inteira (PHP + conteúdo estático). Novamente, você pode usar mage-perftestpara fazer isso, por exemplo.

./mage-perftest -u me-s1.sonassihosting.com

Evite qualquer serviço de teste on-line como a praga

Existem algumas ferramentas de teste de velocidade on-line, como GTMetrix, Pingdom etc. Isso não fornece nenhum tipo de resultado preciso para a criação de perfis granulares.

Eles têm seu lugar em termos de teste de conectividade de rede externa, mas são completamente inúteis como forma de verificar o desempenho real do PHP. Atenha-se a testes locais / no servidor para isso.

Outras notas

Escrevemos um artigo sobre teste remoto e por que você deve evitá-lo, http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento- desempenho/

Executar o Magento em um VPS é uma má idéia. Outros podem discordar - mas não é um ambiente adequado para uma loja Magento por várias razões - e respondemos muitas perguntas nesse sentido, aqui estão algumas

Ben Lessani - Sonassi
fonte
O Perftest é incrível - é no Github para que eu garfo?
Philwinkle
Eu tive problemas para executar perftest, mas o profiler forneceu algumas informações interessantes: mage::dispatch::routers_matche mage::dispatch::controller::action::predispatchparece ser um gargalo, embora eu não tenho certeza do que a solução não é ... a pesquisa não chegar a tanto.
andyjv
As páginas mais eu abertos ao mesmo tempo, mais tempo magento gasta em mage::dispatch::routers_match, respondendo por 22s sobre um carregamento de página 28s. Na mesma carga, também há mage::dispatch::controller::action::predispatch22s, CORE::create_object_of::Mage_Core_Model_Session21s e Mage_Core_Model_Session_Abstract_Varien::start/start21s. Eu tenho certeza que há alguma coisa de pai / filho acontecendo, mas com o routers_matchser o mais longo, eu estou supondo que isso é o pai dos outros 20 funções segundas
andyjv
A saída do criador de perfil é hierarquicamente inclusiva. Ou seja. Está mostrando um total inclusivo para tudo que é executado nessa função. Portanto Mage, levará mais tempo, pois inclui tudo; Routers_Matché basicamente a próxima função que chama, da qual tudo é gerado. Não é o gargalo, mas algo que está chamando (veja mais abaixo) é. Não abra mais de uma janela se estiver criando um perfil - isso não vai conseguir nada.
Ben Lessani - Sonassi
Abaixo Routers_Matchhá: DISPATCH EVENT:controller_action_predispatchàs 21.0710 e OBSERVER: logàs 21.0565
andyjv
3

Provavelmente é um problema do servidor e não um problema do Magento. Dependendo do tipo de servidor usado, você pode obter um tempo de carregamento de menos de um segundo. Você pode até executar testes mais sofisticados aqui: http://www.magespeedtest.com/ . Você também pode revisar a velocidade de outros provedores de servidor lá.

Eu recomendaria também usar o relatório em cascata de http://www.webpagetest.org/ e ver de onde exatamente sua "lentidão" pode estar vindo. Ele o dividirá em partes (como quanto tempo leva para baixar cada arquivo css, js e imagem), o que pode ajudá-lo a melhorar a velocidade.

Dito isto, mesmo se você otimizar o código, css, js, imagens e conteúdo Magento ao máximo, o servidor sempre será o maior problema. Eu recomendaria o uso de um provedor de hospedagem Magento, pois eles têm seus servidores mais ajustados para ajudar o Magento. Pessoalmente, eu uso o Nexcess, mas outros sobre os quais ouvi coisas boas são o Sonassi Hosting e o Peer1.

Existem alguns artigos sobre como melhorar a velocidade, eu recomendaria a leitura das páginas em branco no site Magento.

Embora seja mais voltado para o Enterprise, você ainda pode se beneficiar de muitos conselhos. Além disso, mantenha o Magento atualizado! Você não deve cair mais do que duas versões da versão atual.

kab8609
fonte
1
É bom ter você aqui kab8609! :-)
Fabian Blechschmidt