Qual é a maneira ideal de analisar o uso de memória do WordPress?

8

Estamos executando uma instância multisite do WordPress em dois servidores Rackspace Cloud, uma web e um banco de dados, com cerca de 30 sites atualmente. Coloquei o Nginx na frente de ativos estáticos e o Apache lida com todas as solicitações dinâmicas. Eu também configurei o Memcached para o banco de dados e o cache de código op para o PHP. O W3 Total Cache está ativado por padrão em todos os sites que temos.

É muito rápido com um problema: os processos do Apache pesam regularmente entre 80 e 120 MB. O servidor da web tem 2 GB de memória, o que significa que eu recebo 15 ou mais processos até que as coisas acabem. Os processos obviamente não devem ser tão grandes, mas estou perplexo sobre o porquê deles serem.

Qual é uma boa estratégia para identificar o que está acontecendo?

Obrigado antecipadamente!

Atualização 10/2/10: Para aqueles que estão se perguntando, a resolução do problema de problema de memória foi desabilitar o PHP xdebug (foi habilitado inadvertidamente na configuração e causou picos de uso de memória aleatória).

    
por Daniel Bachhuber 01.09.2010 / 20:25

3 respostas

4

A quantidade de memória do processo apache sobre a qual você fala (80 a 120 MB por processo) pode ser dividida em dois motivos.

  1. Apache
  2. Wordpress

Apache

Você pode otimizar o apache carregando apenas o número de módulos necessários e outros ajustes de otimização que reduzirão a memória. Se você ainda não otimizou isso, dê alguns ajustes.

Wordpress

O Wordpress consome muita memória e não é muito otimizado. Eu começaria com a substituição da classe de banco de dados por algo mais adequadamente implementado. Isso deve ganhar mais velocidade e reduzir muito o uso da memória. Além disso, não tenho muito o que sugerir. Não usando Worpdress não é considerado útil, eu acho.

Estratégias

Para descobrir o que está acontecendo, você precisa controlar a quantidade de memória que uma solicitação de wordpress está ocupando. Há uma função de obtenção de pico de pico ( memory_get_peak_usage() ) que você pode usar para monitorar o uso de memória do worpdress. Se chegar perto dos 80 - 120 MB que você escreveu, você sabe que o wordpress está criando suas dores de cabeça. Você pode querer registrar o registro de data e hora, a memória de pico, o tempo de execução e o URI solicitado.

Usar o Nginx para exibir páginas em wordpress em cache certamente ajudará você, porque evitará que o wordpress seja carregado - mesmo para os caches "de entrada", como o que você usa. Eles são conceitualmente quebrados porque são um plugin do wordpress, então pelo menos uma parte do wordpress precisa ser carregada até mesmo para resultados em cache.

    
por hakre 05.09.2010 / 11:37
1

Daniel,

Eu respeitosamente discordo do kenkeiter, eu entendo o uso do nginx como um proxy reverso na frente do Apache. Harvard Law teve grande sucesso com este método e eles têm um ótimo artigo sobre como eles fazem isso, com um link para o seu plugin WordPress que ajuda a interface com o nginx:

enlace

O que eles descobriram na Harvard Law foi que, com o nginx basicamente fazendo cache de todas as solicitações no front-end, ele não melhora o desempenho para usar qualquer outro plug-in do tipo cache no backend, e não vale a complexidade adicional . Se você é sério sobre como usar o nginx desta forma, eu recomendo que você dê uma olhada nesse artigo sobre sua experiência e tente reduzir os processos dinâmicos, incluindo o cache do WP.

Algumas investigações básicas, como examinar cuidadosamente o acesso do Apache e os logs de erros para ver quais tipos de consultas precisam ser feitas dinamicamente e tentar reduzir esses casos, também podem ser um bom começo.

    
por mitcho 02.09.2010 / 05:13
0

Bem, antes de tudo, você está usando o Apache e o Nginx - meio redundante. Você deve estar usando Nginx / FastCGI w / PHP. O tutorial neste site deve ajudar. Caso contrário, meu melhor palpite é que alguma mudança recente no seu código está causando algum bug no PHP para não liberar a memória corretamente. Não há razão para que um processo do Apache consuma muita memória.

enlace

Boa sorte!

@kenkeiter

    
por kenkeiter 01.09.2010 / 21:48