CPU de 100% ao fazer 4 ou mais solicitações simultâneas com o Magento

5

Atualmente estou tendo problemas com um servidor que executa o Magento, é inacreditavelmente lento.

É um VPS com algumas instalações do Magento usadas para desenvolvimento, então eu sou o único usando-as. Quando eu faço 4 solicitar todos os 2 segundos após o outro eu terminei em 10 segundos. Lenta, mas ainda dentro dos limites da minha paciência. Quando eu faço 4 requisições "simultâneas", no entanto (abrindo 4 abas seguidas, muito rapidamente) todos os quatro núcleos vão para 100% e ficam lá por um minuto.

Como isso é possível?

Eu sei que há muitas possibilidades aqui, então quaisquer dicas sobre como fazer um servidor Apache / PHP ir mais rápido também são bem vindas.

Costumava ir muito mais rápido antes, e eu também tentei o APC, mas ele continuava causando problemas (erros do PHP, algo com pools de memória) então eu o desativei.

A propósito, o cache do Magento está desativado e a compilação também está desativada. Eu sei que isso torna o Magento mais lento que o normal, mas eu não acho que um tempo de resposta de 60 segundos seja normal para qualquer instalação do Magento.

Hardware virtual:
4 núcleos e 4096MB de RAM O swap nunca é usado (marcado com htop) 100 GB de espaço em disco, dos quais 10% estão em uso

Software:
Debian 6 DirectAdmin e apache custombuild PHP 5.2.17 (CLI)

Se você precisar de mais informações, por favor me diga como obtê-lo, porque eu provavelmente não sei como. Eu sei como usar a linha de comando no Linux e o uso de alguns comandos, mas minha experiência com o gerenciamento de um servidor é limitada.

    
por pancake 20.01.2012 / 12:03

4 respostas

2

Magento é terrivelmente lento quando você desabilita o cache ... mais ou menos em um vps, uma vez que ele tem que analisar uma tonelada de arquivos XML. A maneira como ele renderiza uma página facilita muito o acréscimo de novas coisas em toda a página, mas também exige algumas consultas SQL massivas e também o carregamento de arquivos xml.

Então, desabilitar o cache significa que o magento tem que ler esses arquivos xml em cada requisição. Então, cada processo agora está competindo por cpu e disco IO. Em um disco vps IO é onde o gargalo será 90% do tempo. Então, 4 processos simultâneos, todos pedindo para ler um monte de arquivos xml, causando muita CPU, esperam nos processos do apache.

se você fizer um strace em um dos processos do apache enquanto ele renderiza uma página no magento, você verá todo o xml que ele precisa renderizar.

Eu não toquei em magento em mais de 2 anos, mas foi um pesadelo rodar um site com tráfego, então minha empresa na época acabou construindo seu próprio software.

    
por 20.01.2012 / 14:53
1

Geralmente, é recomendado seguir 2x regra: 1 core = 2Gb RAM, 2 núcleos = 4Gb RAM, 4 núcleos = 8 Gb RAM. Sim, você disse que a troca não foi usada, mas talvez aumentar a RAM seja a opção. Dica: Para rastrear o histórico de carga da CPU e da memória (não apenas atual), eu recomendo usar a extensão Performance Monitoring do PotatoCommerce.

    
por 15.05.2017 / 12:26
0

Você deve descobrir se está esperando pelo Magento, pelo banco de dados ou por qualquer subsistema intermediário. Para determinar isso, execute strace no seu servidor web / php com o sinalizador -ttt. Cada chamada de sistema será prefixada com um registro de data e hora de microssegundo, para que você possa ver por quanto tempo o processo do PHP está aguardando o DB, as pesquisas de DNS e possivelmente outras chamadas do sistema.

    
por 23.01.2012 / 22:28
0

Minha primeira sugestão é executar o script MySQL tuning-primer.sh para garantir que sua configuração do MySQL tenha uma configuração de linha de base apropriada .

Descobrir o seu problema com a APC para que você possa utilizá-lo também será uma boa despesa do seu tempo. Mesmo apenas um SHM de 32MB para a APC fará uma melhora drástica.

Você fez uma otimização de linha de base do Apache e do PHP, ou seja, removendo módulos desnecessários / desnecessários? Você está usando o Apache prefork com o mod_php ou o Apache worker com o php-fpm?

    
por 06.11.2012 / 15:07