Análise de desempenho do Apache

1

Estou tendo muito dificuldade com meu servidor da web. Eu tenho aprimorado as coisas de acordo com as sugestões na web, mas não consigo encontrar nada de concreto.

Meu processo do Apache estava comendo 450 MB na coluna Memória Virtual quando eu fiz o htop. Eu procurei na internet e as pessoas disseram que instalar o eaccelerator no sistema se tornará mais rápido e eficiente e consumiria menos memória e CPU. Infelizmente, isso acabou sendo pior do que antes. Agora meu apache processa mostrando 1488MB de memória na coluna Memória Virtual.

  1. Embora cada processo mostre 1488MB de memória, posso ver que o consumo total de RAM é de apenas 7GB também quando 4GB foi removido pelo Varnish Cache (estou usando-o como proxy reverso).

  2. Não tenho certeza se devo me preocupar com a coluna Memória Virtual ou não.

  3. Depois de instalar o eaccelerator, meu servidor não caiu devido ao consumo de RAM completa de 18 GB e 2 GB de espaço SWAP. Isso costumava acontecer antes. Mas, novamente, tem sido apenas 1 dia desde que eu instalei o eaccelerator, portanto, os problemas começarão a aparecer em um dia ou dois.

  4. Por favor, não me sugira usar o APC ... não está instalando no meu servidor.

  5. Verifiquei na página phpinfo do meu servidor e descobri que o Eaccelerator está armazenando em cache os scripts. A partir de agora, ele consumiu cerca de 80MB de memória (de 1Gb atribuído por mim) e armazenou cerca de 900 scripts.

  6. A partir de agora, minhas configurações do prefork são -

        StartServers 8
        MinSpareServers 5
        MaxSpareServers 20
        ServerLimit 256
        MaxClients 256
        MaxRequestsPerChild 100

Veja abaixo a captura de tela do htop.

FYI - É um servidor dedicado e tem 8 núcleos de CPU. Até o momento em que meu servidor está funcionando, o desempenho do meu site é excelente. Ele é carregado em cerca de 8 segundos pela primeira vez e a segunda visualização é de 2,5 segundos. O site é imagem pesada como um site de comércio eletrônico.

    
por Nitin Srivastava 08.09.2011 / 07:02

3 respostas

4

Como um sistema Unix usa memória é uma história muito longa e complicada. Adicionar o tamanho virtual de cada processo não fornece uma figura precisa do que está acontecendo. Uma abordagem muito melhor é rastrear o número do processo do httpd e a memória disponível (menos buffers / cache) conforme relatado por 'free'. Em seguida, plote-os em um gráfico e obtenha uma medida mais realista.

Enquanto no seu caso, isso é um pouco complicado por ter o verniz em execução, ele ainda lhe dará uma boa indicação de como a demanda afeta a memória.

Você não forneceu informações sobre como configurou o KeepAlives, o que causa um grande impacto no uso e no desempenho da memória. Nem você forneceu qualquer informação sobre o padrão de atividade no servidor - como o número de processos httpd varia ao longo do ciclo? Sem saber disso, é impossível comentar como são apropriados os detalhes do conf que você forneceu. No entanto, sua MaxRequestsPerChild é muito baixa, a menos que você suspeite que há um grande problema com seu código.

Além disso, sem saber mais sobre os volumes relativos de tipos de conteúdo, é difícil dizer o que ajudaria. Se você usar muitos CSS, JS e HTML estáticos, obterá muitos benefícios com a compactação.

8Cores e 18Gb? O Big Iron é a maneira ERRADA de construir uma arquitetura de servidor da web escalável.

my site performance is excellent. It loads in around 8 sec for the first time and second view is 2.5 seconds

Acho que temos diferentes interpretações da palavra "excelente"

Embora eu suspeite que há muito ajuste e refatoração a ser feito aqui (especialmente a julgar por todas as informações que você não forneceu em sua pergunta), eventualmente, você só precisa adicionar mais hardware. Enquanto isso, você pode querer comprar alguma ajuda.

    
por 08.09.2011 / 11:11
2

Se você quiser reduzir o uso de memória, você não deveria estar usando prefork , mas usando threads worker . Como o próprio nome sugere, prefork na verdade inicia um novo processo a cada vez, com seu próprio espaço de memória e quais não.

Então, altere seu apache para usar trabalhador mpm. Isso deve ajudar um pouco.

Dito isso, se você tem 18 GB de RAM, qual é o problema de usar 7 GB para o apache? Você tem muito sobrando para outras coisas.

Talvez você possa explicar melhor o que está tentando alcançar.

    
por 08.09.2011 / 09:12
0

Memória virtual é o que o nome diz. Veja a coluna RES para o uso real da memória.

Para detalhes, consulte man top , especificamente DESCRIPTIONS of Fields seção.

    
por 08.09.2011 / 07:15