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 .
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.
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:
Por que bate tão pequeno? Alguma ideia?
fonte
xhprof
e 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?Respostas:
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:
fonte
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
fonte
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!
fonte
free -m
informará se você está usando swap, e as versões mais recentes dotop
comando 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/…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/
fonte
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
fonte
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.
fonte
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.
fonte
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.
fonte
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
fonte