Carregamento de página Magento demorando muito tempo


10

Eu tenho o site magento. Não há usuários (máximo de 2 a 3 no momento).

Nosso servidor é: CPU: 2000MHz RAM: 2048Mb HDD: 50000Mb.

Instalei o ZendServerCE (apc + memcached + Zend Optimizer + Zend Data Cache). Desativei o memcached porque o site carregava muito pior. Defino uma estrutura de tipo plano, dados reindexados e armazenados em cache no console de administração.

Então, eu tenho apc + Zend Optimizer + Zend Data Cache .

  1. O primeiro problema é que verifiquei o tempo de execução como o despacho funciona. A chamada start_session () leva cerca de 500 a 700 ms. Parece que não é um bom resultado. Por que tanto tempo, eu não sei.

  2. Eu li este: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size e descobri as melhores opções para o meu servidor.

Por hora:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

Você vê que 252/8887> 0,01, mas não muito. É o valor ideal que eu já recebi. Outros resultados começaram em> 6.

Aqui está o my.cnf:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3. Memcached por algum motivo não foi bom. Eu desliguei. Mas o cache de dados zend e o otimizador zend ainda funcionam.

4) A APC parece correta. Para carregar a ação do controlador, são necessários 3-4segundos pela primeira vez (eu defino die () lá para verificá-lo) e pela primeira vez leva de 1 a 1,3 segundos.

5) Após alguns minutos, reiniciei o mysql e obtive um bom resultado. As páginas foram carregadas de 1,5 a 2,5 segundos. Mas agora (depois de várias horas) leva de 6 a 10 segundos. Não consigo encontrar o motivo.

Então você vê alguma configuração incorreta aqui? Pode ser que meu servidor não seja adequado para magento?

ATUALIZAÇÃO 1: cerca de 600 categorias e 1.000 produtos hoje e cerca de 20.000 categorias (para diferentes lojas da web) e 1500-3000 produtos no futuro.

Não há muitos atributos.

ATUALIZAÇÃO 2 Observei que o console ssh funciona muito devagar. Reiniciei o servidor e agora ele funciona rápido. isso significa que tenho um problema com a RAM. Não há espaço suficiente.

É o status inicial sem o apache:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

ATUALIZAÇÃO 3 Eu entendi. Agora ele é carregado por 0,5 a 1,5 segundos

Aqui está a configuração: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

php

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

Tudo funciona perfeito, mas uma pergunta permanece. A APC me mostra esta estatística: insira a descrição da imagem aqui

Por que bate tão pequeno? Alguma ideia?


Seria bom se você soltasse algumas linhas sobre a instalação do Magneto (por exemplo, tamanho do catálogo, modificações, extensões etc.).
user487772

Não há como alguém simplesmente publicar uma série de arquivos de configuração para que você possa configurar corretamente seu servidor. Existem dezenas de arquivos; revisões específicas de alterações no nível do software e do sistema que precisam ser feitas para aproveitar ao máximo o hardware disponível.
Ben Lessani - Sonassi

Por favor, descreva por que você colocou voto negativo
Anthony

@ Tim atualizei a pergunta
Anthony

2
Gostaria de entrar xhprofe tentar obter uma visualização do que está demorando mais tempo para carregar. Este é um servidor de produção sob carga ou apenas para teste?
22613 philwinkle

Respostas:


6

Como a pergunta parece não ser muito centrada no magento, aqui está a minha resposta não muito centrada no magento.

O cache do OpCode e as otimizações de banco de dados são uma boa maneira de acelerar seus aplicativos da Web até certo ponto. Mas o benefício será relativamente moderado. Para obter um aumento real da velocidade, considere o uso de cache de verniz. É de código aberto, fácil de configurar e de integrar com o magento, graças aos módulos disponíveis gratuitamente para o magento.

Há também um bom artigo com uma breve visão geral de como funciona: http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

Considere especialmente o gráfico:

páginas / segundo


4
O verniz é ótimo se você já possui uma loja rápida e deseja compensar recursos. Mas nunca deve ser usado para esconder o fato de uma loja ser lenta. As páginas ainda precisam ser geradas em primeiro lugar - portanto, sempre terão tempos de carregamento de 6 a 10 segundos, independentemente.
Ben Lessani - Sonassi

Parece que seria como o memcached que eu usei antes. Eu acho que eu fiz de errado smth em propriedades MySQL ou servidor é muito fraco
Anthony

2

Se sua empresa depende de sua hospedagem com bom desempenho, por que você está tentando administrar o servidor sem experiência?

Você certamente se beneficiaria apenas entrando em contato com um host especialista do Magento e deixando que ele cuidasse da administração do sistema, enquanto você faz o que é bom em gerenciar sua loja.

Observando suas especificações, você não possui RAM suficiente para tentar executar uma loja Magento. Há muitas perguntas semelhantes como a sua,

/server//a/400748/113375 .
/server/430565/magento-hosting-on-a-budget


Porque nosso cliente tem orçamento limitado. Eu deveria pagar pelo host magento mais de 50 euros por mês. Temos um limite para o host de 150 a 200 euros por ano-) De qualquer forma, obrigado pelos links
Anthony

1
Em seguida, o cliente pode esperar obter uma receita de ~ US $ 20-40.000 / ano com 100% de otimização (a hospedagem representa de 0,5 a 1% da receita). Muitas pessoas aqui podem fornecer todos os detalhes e configurações técnicas, mas você está tentando fazer muito com muito pouco. Você pode fazer com que ele funcione no lado técnico, mas no lado comercial, ele vai cair. A menos que o carregamento de suas páginas dinâmicas (sem fpc) seja inferior a 3s, você perde 56% dos visitantes, segmentando idealmente 1-2s - as conversões do Google e dos visitantes punirão o site de outra forma - uma chamada difícil. Dada a situação, uma chance de 95 a 99%> a página 3s é carregada e / ou o site fica abaixo.

1

Esse hardware é físico ou um servidor virtual privado? Você provavelmente deve mover seu banco de dados para seu próprio servidor dedicado. Isso também oferece o benefício de poder isolar se seus problemas de velocidade estão no Apache / PHP ou no MySQL.

start_session () ser lento significa que você provavelmente está sofrendo de hardware com pouca potência. Não sei se suas opções de tecnologia significam que as sessões são armazenadas no disco ou na RAM, mas 500-700ms quase certamente significa que elas estão sendo armazenadas no disco e você está tendo problemas de desempenho de E / S - provavelmente porque seu banco de dados é trocar para o disco porque não cabe na RAM ... mas isso é tudo especulação.

Boa sorte!


Obrigado pela sua resposta! Eu uso o VPS. Não é muito adequado para magento, mas tenho uma tarefa para otimizá-lo neste escopo. É possível verificar se o banco de dados está trocando para o disco?
Anthony

1
free -minformará se você está usando swap, e as versões mais recentes do topcomando informarão se você pressionar O e P para ordenar pelo uso de swap. Caso contrário, você deve voltar a usar o ID do processo do mysqld com algo como isto: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps Tudo descrito aqui: dbasquare.com/2012/04/10/…
Ralph Tice

1

Obviamente, não há como mostrar uma 'configuração de trabalho' que aumentará seu desempenho, mas o Magento realmente tenta fazer algo assim e publica um exemplo de uma pilha LAMP altamente configurada em seus whitepapers sobre desempenho. A metodologia desses whitepapers se aplica a CE e EE. Eu recomendo a leitura completa de ambos os whitepapers, pois as idéias sugeridas ecoam muito desse tópico e forneceram recomendações muito específicas do Magento, diretamente da fonte: http://www.magentocommerce.com/whitepaper/


1

Configuração

ZendFramework (otimizador de zend e cache de dados zend) + APC + Memcache + Nginx

funciona perfeito para mim.

mais de 30 usuários simultâneos podem carregar a página em menos de um segundo (~ 0,4s-0,6s)

Eu configurei o nginx na porta 80 (como proxy) e o apache em 8080.

Obrigado a @MattSchweers pelos links. Eu esqueci sobre isto. Isso me ajuda a configurar o MySQL


sem problemas! Na verdade, eu usei esses documentos técnicos para alguns ajustes do MySQL nesta semana - funcionou bem.

1

na minha experiência, o servidor litespeed aumenta o desempenho em 2 vezes e vale a pena a licença de US $ 32 / month 1cpu. Foi-me dito que você só precisa da licença 1cpu, já que o php é executado separadamente no litespeed.


O servidor web não é o gargalo. PHP é, mudar para Litespeed não vai mudar nada.
Ben Lessani - Sonassi

Embora eu concorde geralmente que o Litespeed é uma ótima opção para o Magento, essa resposta provavelmente não resolverá o problema apresentado pelo OP e está fora do orçamento indicado.
Preston

0

Quando você tem várias lojas da web e várias categorias, o Magento está essencialmente criando um tipo de produto caretiano de entradas para todas as lojas da web, categorias e produtos, o que vai colocar uma carga significativa no banco de dados. Suas falhas da APC são bastante altas e você precisará analisá-las. No entanto, mesmo se você corrigir a APC, acho que seu problema de desempenho poderá persistir, especialmente se o tráfego aumentar. Para acelerar o site, você precisará instalar um cache operacional, o Varnish ou o cache de página inteira (se Enterprise Edition).

O Magento faz muitas leituras de gravação no banco de dados para que você também possa tentar ter seu MySQl em um modo de replicação Master Slave, para ter todas as leituras de magento do escravo, enquanto as gravações acontecem para o mestre.


0

Eu tentaria alterar as seguintes opções da APC e ver se os hits são exibidos.

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

Em um site ativo, você também pode usar o seguinte.

apc.stat 0

Isso interromperá a verificação da APC se o arquivo foi alterado desde a última compilação, oferecendo um ótimo aumento de velocidade. Apenas não esqueça de liberar o cache da APC ao editar arquivos PHP.


0

Alguns outros pensamentos. Convém aumentar seu innodb_buffer_pool_size, 128M pode ser um pouco baixo e até sites pequenos podem crescer tão rapidamente. A variável determina quanto dos seus dados são mantidos na memória.

O Magento usa isso para todas as suas tabelas, incluindo as tabelas de log que crescem rapidamente. Você quer ter certeza de limitar a quantidade desses dados que está mantendo. Executar "php shell / log.php --status" na linha de comando dará uma idéia de onde você está e se está ficando fora de controle. Também existem opções para limpar as tabelas de log.

Não é muito fácil trabalhar com 2 GB de RAM; portanto, você precisa ter cuidado com o local onde aloca sua memória.

Além disso, um cache de página inteira + um aquecedor de cache pode ajudar a manter o catálogo e as páginas cms do seu site preparados e rápidos. Você pode ver o nosso aqui: http://ecommerce.brimllc.com/full-page-cache-magento.html

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.