páginas carregando lentamente

8

No momento, estou enfrentando um carregamento lento de página, com o checkout sendo o mais lento de todos com :

  • 28 pedidos
  • 18,5 KB transferidos (restante em cache do disco ou da memória)
  • Concluir: 15.24s (o carregador desaparece e o usuário pode fazer alguma coisa)
  • DOMContentLoaded: 6.45s
  • Carga: 10.28s

O carregamento do checkout / carrinho termina com:

  • 29 pedidos
  • 28,5 KB transferidos (restante em cache do disco ou da memória)
  • Acabamento: 6.35s
  • DOMContentLoaded: 1.9s
  • Carga: 3.79s

enquanto um carrinho vazio possui:

  • 22 pedidos
  • 8,2 KB transferidos (restante em cache do disco ou da memória)
  • Acabamento: 2.78s
  • DOMContentLoaded: 1.22s
  • Carga: 2.65s

Estou usando redis para armazenamento em cache e todos os caches estão ativos. Javascript é minificado, mesclado e empacotado, bem como css e html. O servidor está muito bem situado com 8 CPUs, 16 GB de RAM e um SSD. A carga etc. nunca é alta o suficiente para ser mencionada. Basicamente, o servidor está dormindo ...

Existem apenas ~ 80 produtos e uma loja. Não usamos a parte do conteúdo do Magento. Apenas as páginas de detalhes do produto, a caixa e a área do cliente (assim como o back-end) são atendidas pelo Magento. Existe um sistema CMS "na frente" do Magento que serve páginas em menos de um segundo total, incluindo mídia.

Vejo que o TTFB para o documento de checkout já tem 5,66s. Com o Magento Profiler habilitado, posso descobrir o que magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_bodycausa a maior parte desse tempo. Embora não esteja claro o que exatamente causa isso. Aqui o criador de perfil não pode ajudar muito (pelo menos eu).

magento->routers_match                                                                                                                                                                                                                                                                                            5.347600 5.347600 1  42,063,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index                                                                                                                                                                                                                                                    5.143997 5.143997 1  15,976,176 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body                                                                                                                                                                                                                                       5.143980 5.143980 1  15,975,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest                                                                                                                                                                                                           0.000609 0.000609 1  82.464     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest->OBSERVER:checkout_allow_guest                                                                                                                                                                            0.000592 0.000592 1  80.944     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT                                                                                                                                                                                                                               0.106220 0.035407 3  13,085,544 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_load                                                                                                                                                                                                                  0.000666 0.000666 1  136.56     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_xml                                                                                                                                                                                                          0.005658 0.005658 1  174.632    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks                                                                                                                                                                                                       0.099472 0.099472 1  12,755,648 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements                                                                                                                       0.099462 0.099462 1  12,902,296 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements                                                                                                    0.091426 0.091426 1  11,885,184 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->EVENT:core_layout_block_create_after                                                              0.000169 0.000003 51 -16.128    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements                    0.000609 0.000609 1  52.76      0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements 0.000455 0.000455 1  26.952     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after                                                                                                                                                                                           0.000297 0.000297 1  16.32      0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after->OBSERVER:persistent                                                                                                                                                                      0.000279 0.000279 1  14.776     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch                                                                                                                                                                                                                         0.002972 0.002972 1  116.752    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch                                                                                                                                                                                   0.002913 0.002913 1  110.192    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor                                                                                                                                                        0.002900 0.002900 1  108.656    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags                                                                                                                             0.001175 0.001175 1  77.784     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_varnish                                                                                                0.000516 0.000516 1  35.056     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_builtin                                                                                                0.000629 0.000629 1  41.08      0

Também habilitei o criador de perfil de banco de dados, mas nenhuma consulta leva mais de 1ms, embora haja quase 120 chamadas. Mas isso resulta em apenas 120ms.

Gerei um perfil xdebug localmente e posso ver que a maior parte do tempo é desperdiçada no carregamento automático. Mas não tenho certeza se isso é "normal". Eu só me pergunto por que file_exists é chamado com tanta frequência. Como eu estava com a impressão, tudo é pré-compilado e armazenado em cache. Eu uso composer dump-autoload -o --apcudepois de compilar di. E é claro que o apc está instalado e funcionando.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

No entanto, estou preso aqui por enquanto. Parece que não consigo entender por que o TTFB já tem 5 segundos. E mesmo que eu resolvesse que ainda há mais 10 segundos para explicar e corrigir. Meu palpite principal atualmente é que estas são algumas solicitações xhr no bloqueio em segundo plano. Ou seja. Vejo que os métodos de estimativa de envio só começam após um intervalo intensamente longo de cerca de 7 segundos a 13 segundos e demoram cerca de 647ms. Por que demora tanto para desencadear isso? Até que isso termine, a animação do carregador é exibida, fazendo a página parecer "travada".

métodos de estimativa-expedição "atraso"

carregamento da página de checkout

Qualquer contribuição é muito bem-vinda! Espero uma carga de página de 2 a 4 segundos no máximo. como foi o que eu comecei.

Edit: Eu consertei o TTFB alto. Como disse, estou usando o Redis para fazer cache. Também para cache de sessão, mas leva a um bloqueio entre duas sessões concorrentes. Na verdade, é a solicitação de checkout e a solicitação de estimativa de envio, levando a um tempo limite de 5 segundos. Voltei as sessões para o modo de arquivo normal. Infelizmente, isso não corrigiu o longo tempo de carregamento! Meu melhor palpite atual é que algo faz com que os métodos de estimativa de envio esperem antes de serem chamados, resultando em um bloqueio da página. Além disso, tentei adiar todas as JS sem nenhuma alteração.

Edit2: Como @ peter-ocallaghan observa o problema com o carregamento do checkout tão lento (+10 segundos) é realmente apenas um problema específico do cromo com o console do desenvolvedor aberto. O check-out / carrinho não parece ser afetado.

steros
fonte
Eu não sei muito mais sobre isso. Estou enfrentando esse problema quando estava chamando API ou plug-in de terceiros. Isso ocorreu quando não recebi nenhuma resposta.
55840
Atualmente, estou tentando eliminar tudo o que pode interferir. Também estou chamando uma API de terceiros, então desliguei isso para um teste. Nenhuma mudança. Até agora, não consegui descartar o que torna a página tão lenta.
steros
Vou tentar entender que se você fechar o depurador do Chrome, o tempo "magicamente" cairá (ou pelo menos significativamente mais próximo) do tempo de carregamento de 2 a 4 segundos. Durante as investigações de sites M2 ao vivo, eu não conseguia entender como os comerciantes aceitariam 15 segundos de carregamento. Por fim, percebi que, usando o depurador chrome como mecanismo de tempo, inadvertidamente estava diminuindo a solicitação por uma ordem de magnitude.
Peter O'Callaghan
Eu estava apenas testando isso. A maioria das páginas demora ainda pelo menos ~ 4 segundos e dura até 7 segundos. Mas pelo menos o checkout não carrega em 15 segundos em todos os outros navegadores, mais em 5 segundos. Parece que isso é algo com o chrome.
Estereos
Consegui reduzir o tempo um pouco mais usando o memcached para cache de sessão. Como mencionado, usei redis, mas isso levou ao bloqueio, então voltei para os arquivos, mas parece que também bloqueia. Então, mudei para o memcached e agora o carrinho é carregado em ~ 2s na segunda carga e 5-7s na primeira. Parece que os métodos de envio estimado e as informações totais são o bloqueador aqui. Se eu apenas recarregar o carrinho sem nenhuma alteração, são 2 segundos. Se eu adicionar um produto ou apenas alterar a quantidade e atualizar o carrinho -> 5-7 segundos.
steros

Respostas:

3

Parece que meu principal problema é a simultaneidade da sessão acontecendo por qualquer motivo. Tentei usar o cache de sessão com o Redis, conforme proposto na documentação.

'session' =>
array (
  'save' => 'redis',
  'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => '6379',
    'password' => '',
    'timeout' => '2.5',
    'persistent_identifier' => '',
    'database' => '2',
    'compression_threshold' => '2048',
    'compression_library' => 'gzip',
    'log_level' => '1',
    'max_concurrency' => '6',
    'break_after_frontend' => '5',
    'break_after_adminhtml' => '30',
    'first_lifetime' => '600',
    'bot_first_lifetime' => '60',
    'bot_lifetime' => '7200',
    'disable_locking' => '0',
    'min_lifetime' => '60',
    'max_lifetime' => '2592000'
  )
),

Mas como tenho o problema de bloqueio de sessão, acho que isso é levado em consideração:

break_after_frontend

Número de segundos a aguardar antes de tentar quebrar o bloqueio da sessão de front-end (ou seja, fachada).

Ou seja, sempre há um atraso de no máx. 5 segundos. Quando mudei para a sessão do memcached, ficou um pouco melhor porque a espera foi menor. O padrão é estas configurações:

memcached.sess_lock_wait_min => 1000
memcached.sess_lock_wait_max => 2000
memcached.sess_lock_retries => 5

Estes são os padrões de uma versão mais antiga do php-memcached. A versão mais recente propõe os seguintes padrões:

memcached.sess_lock_wait_min => 150
memcached.sess_lock_wait_max => 150
memcached.sess_lock_retries => 200

Depois de ler estes dois: https://github.com/php-memcached-dev/php-memcached/pull/350 https://github.com/php-memcached-dev/php-memcached/issues/269

Eu tentei com:

ini_set('memcached.sess_lock_wait_min', 150);
ini_set('memcached.sess_lock_wait_max', 150);
ini_set('memcached.sess_lock_retries', ini_get('max_execution_time') * 1000 / 150);

no index.php do Magento e isso acelera novamente o processo. Agora, recebo uma carga do caixa em aproximadamente 4 segundos. O carrinho é um pouco mais lento com ~ 5 segundos por causa do carregamento de informações totais. (todos tentam primeiro sem cache do navegador)

Suponho que corrigir o problema de bloqueio de sessão aceleraria novamente os tempos de carregamento, pois, observando os perfis, ainda há uma espera session_start()de 300 a 800 ms para várias chamadas.

steros
fonte
Eu também estou preso neste Sateros. Estou usando verniz com uma solução alternativa para https e Redis. O site está lento. Têm procurado a newrelic e não conseguem encontrar a resposta conclusiva. É a questão dos Redis?
Adarsh ​​Khatri 25/02
1

Otimizações possíveis:

analisador

Sr. Lewis
fonte
0

Usando Solar ou Memcache ou Varnish, você pode acelerar seu site magento.

Puspalata Panigrahi
fonte
Estou usando Redis e memcached. Não posso usar o Varnish, pois ele não suporta https e não quero usar uma das soluções alternativas.
steros 23/08/18
@steros Por favor, veja meu perfil, Perfil de rede para informações de contato e entre em contato comigo pelo Skype para obter assistência.
Wilson Hauck