Processo "httpd" do Apache, utilizando toda a memória dos meus servidores

9

Minha pequena instância de ec2 com 1,7 GB de memória, executando a Amazon AMI baseada no CentOS, tem um problema com o Apache utilizando muita memória do que deveria. Se você der uma olhada na captura de tela, o uso da memória será de 90 a 100% até eu reiniciar o serviço httpd, onde será iniciado novamente, aumentando o caminho de volta para mais de 90%.

insira a descrição da imagem aqui

Eu realmente gostaria de receber alguma ajuda sobre como localizar o problema. Esse é talvez um comportamento apache "normal" para utilizar toda a memória disponível? Ou há um possível vazamento que eu tenho que caçar. No momento, estou um pouco perplexo com o que poderia estar acontecendo.

Estamos usando o pré-fork Apache MPM, e nenhum sql ou algo semelhante - apenas apache. O site está aqui .

Amivit
fonte
1
Parece não usar nenhum swap, então qual é o problema?
HTTP500
O fato de estar usando tanta memória não deveria ser uma preocupação? Desculpe minha experiência de iniciante, acho que pode ser uma suposição incorreta. Talvez seja um comportamento normal e que o Apache tenha sido projetado para usar toda a memória que pode pegar, apesar de ser um site de baixo tráfego?
Amivit 17/07
1
Notei que você está usando o NewRelic, que também pode registrar o tempo gasto no apache (pode ser útil) se você adicionar esta linha ao seu httpd conf: RequestHeader set X-Request-Start "%t"se ainda não o tiver. Isso aparecerá como "Enfileiramento de solicitações" quando você acessar Servidor de aplicativos> Visão geral - pode ajudar você a chegar ao final do problema.
KM.

Respostas:

8

Como o HTTP500 disse, você provavelmente não deve se preocupar com isso, a menos que a máquina esteja realmente sufocando. Dê uma olhada na Ajuda! Linux comeu minha RAM! . Não é uma situação bastante análoga, pois você tem processos em vez de buffers usando a RAM, mas não está muito longe: a RAM física da sua máquina é um recurso a ser usado, com buffers do kernel ou processos sobressalentes de trabalho do Apache para lidar prontamente com as entradas solicitações de. Se você não estiver usando RAM, pagou em excesso pelo tamanho da sua caixa.

De qualquer forma, se você quiser jogar com as configurações do MPM, a documentação do Apache é http://httpd.apache.org/docs/current/mod/prefork.html

Talvez você possa reduzir os MinSpareServers, StartServers etc., pois declarou que o site é de baixo tráfego. Você terá mais RAM livre para ser consumido pelos buffers do kernel para seus propósitos nefastos.

cjc
fonte
4

O linux usando toda a sua memória é normal, a memória que não está em uso, caso contrário, é redefinida como cache de disco. veja: linux comeu meu carneiro

Você pode verificar isso observando a saída de free -me espera ver algo assim:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

a linha +/- buffers / cache é a que você deseja. Ele adiciona ram em cache gratuitamente para fornecer uma melhor imagem da quantidade de memória realmente disponível. Nesse caso, você deseja prestar atenção ao número 3416, não 101.

ensopado
fonte