O Apache usa muito CPU para um site pequeno

1

Eu tenho um servidor CentOS 5.5 VPS com configuração de 512MB de RAM.

Há 1 site hospedado nele através do Apache / PHP / MySQL, que é construído em Magento, uma estrutura de comércio eletrônico popular.

Quando navego no site, demora cerca de 10 segundos a carregar e a correr top mostra-me o seguinte:

Eu entendo que o Magento é um software relativamente pesado e faz muito processamento, mas isso é ridículo para um site.

Ainda não foi lançado, mas minha preocupação é quando isso acontece e algumas pessoas navegam na página inicial ao mesmo tempo, isso pode causar problemas.

Eu não sou um servidor, então não sei o que fazer em termos de configuração. 512MB de RAM devem ser suficientes para rodar este site.

Minha configuração do Apache está abaixo, qualquer sugestão seria ótima!

Timeout 120
KeepAlive Off
StartServers       2
MinSpareServers    2
MaxSpareServers    7
ServerLimit       25
MaxClients        25
MaxRequestsPerChild  500
    
por fire 26.01.2012 / 14:07

4 respostas

1

É bastante óbvio onde está o seu primeiro gargalo. Olhe para a sua saída TOP, especificamente 8.7% wa - você está limitado a E / S. Então, o que você acha que é o uso da CPU, é o seu HDDs lutando para servir os dados com rapidez suficiente.

Isso é extremamente comum em um VPS em que o IO é um recurso compartilhado, portanto, a atividade de outra pessoa afetará gravemente seu desempenho.

O Magento não é grande e lento e pode funcionar tão bem quanto qualquer outro aplicativo da web - mas se seu servidor estiver lento, certamente não ajudará.

Leia este link para obter algumas dicas sobre configuração

Mas as outras respostas estão corretas de que, embora você ainda possa ter tempos de carregamento de página rápidos com um usuário, você quase certamente não terá um número maior do que isso.

Eu escrevi um bom detalhamento sobre como o Magento se comportará em um VPS aqui link

    
por 12.03.2012 / 01:38
2

Magento é um porco de recursos. Se você não tem todo o caching do magento ligado, será lento em um servidor com 5x essas especificações.

Portanto, certifique-se de ativar todo o armazenamento em cache.

Também o magento é um "memory hog" mesmo quando o cache está ativado, então você pode ter a sorte de obter 5 conexões simultâneas com 512meg de ram.

Eu era administrador de sistemas de uma empresa que começava com o magento e depois criava sua própria solução, pois era mais barato construir nossa própria plataforma, depois usar o magento e lançar o hardware nele em grande escala.

    
por 26.01.2012 / 14:36
1

Dependendo de como o seu Apache / PHP está configurado, será o código PHP que está tomando o tempo da CPU não o próprio Apache (se você rodar via modPHP então o uso da CPU do PHP é contado no Apache, se você usa CGI / FastCGI PHP processo deve ser listado separadamente na saída de top ).

Eu não sei nada de Magento (suas rotas de suporte seriam um lugar melhor para pedir ajuda específica para seus scripts) é possível que haja algum erro de configuração que esteja fazendo com que ele tente fazer muito trabalho - verifique novamente a documentação para veja se tem alguma sugestão sobre como otimizar o uso da CPU.

Pode ser que ele esteja executando uma tarefa uma vez a cada vez que precede uma pilha de coisas que, em seguida, armazena em cache para uso posterior, caso em que o problema pode não estar presente em solicitações posteriores.

Também pode ser que o seu VPS esteja sobrecarregado em termos de CPU, então o que levaria um segundo ou menos acesso dedicado a um CPu poderia levar 10 porque o seu VPS está lutando com outros pelo uso da CPU. Eu vi muitas VMs comprimidas em uma máquina dual core que é boa quando a maioria das VMs está relativamente ociosa na CPU (o que é comum em máquinas web / sql, já que elas passam a maior parte do tempo esperando por E / S de rede ou disco em vez de fazer um trabalho ocupado com a CPU, mas longe de ser sempre o caso).

Você já tentou comparar o desempenho em uma cópia da instalação executando uma VM em uma de suas próprias máquinas? Se ele funcionar bem lá do que indica que algo é subespecificado com o seu VPS, se ele estiver lento em sua VM local (presumivelmente de outra forma descarregada), então o problema é mais fácil de ser incluído nos scripts ou em sua configuração. Você também pode tentar executar um benchmark de CPU simples para ver se a VM é "lenta na CPU" - sugiro um único teste de thread único de processo, pois parece que o que está mantendo o Apache ocupado é um processo / thread (uso geral de vCPU um 10-20% dependendo do que você conta enquanto o processo do Apache está listado em ~ 80%, pois ele está usando uma CPU virtual e o restante está mais ou menos inativo).

    
por 26.01.2012 / 14:33
1

Sua configuração do apache coloca um pouco mais de limites na quantidade de tráfego que este site irá manipular.

Como Mike diz, o Magento é muito grande e lento.

Como o httpd usa a CPU, presumo que o PHP esteja rodando como mod_php. Certifique-se de que você está permitindo bastante memória para o PHP rodar, e use um cache opcode. Também verifique se você está fazendo todas as coisas usuais para ajustar seu aplicativo.

    
por 26.01.2012 / 16:26