Depurar servidor Apache instável em Debian

1

Desde ontem meu servidor Apache que roda em uma máquina Debian roda muito instável. Às vezes meus sites carregam e às vezes não. Eu acho que tem a ver com a memória desde o meu log Apache está cheio de falta de memória (alocado 262144) (tentou alocar 4480 bytes). Eu também anexei uma captura de tela do gráfico de memória.

A reinicialização do servidor resolve o problema temporariamente. Eu olhei para os processos que estão usando memória, mas o maior deles é o MySQL com 6.5%.

Onde mais pode procurar o problema?

Edit: Eu fiz um livre -m logo após a reinicialização e uma cerca de 2 horas depois. Eu acho que a tendência é visível:

root@xxx:~# free -m
             total       used       free     shared    buffers     cached
Mem:          4016        731       3284          0         80        200
-/+ buffers/cache:        449       3566
Swap:          459          0        459

root@xxx:~# free -m
             total       used       free     shared    buffers     cached
Mem:          4016       2466       1550          0         92        473
-/+ buffers/cache:       1900       2115
Swap:          459          0        459
    
por almo 22.08.2014 / 16:44

3 respostas

1

Você provavelmente tem muitos e muitos processos do apache em execução. Emita um ps ax | grep apache2 | wc -l para ver quanto.

Se o parâmetro KeepAliveTimeout for muito grande (como o padrão), alguém pode se conectar a você, deixar a conexão demorar e consumir todos os seus recursos.

Eu costumo usar KeepAliveTimeout 5 , então quando o nothign volta em 5 segundos, o Apache pode desligar a conexão.

Verifique também o MaxConnectionsPerChild . Se eles são ilimitados, um vazamento de memória vai consumir toda a sua memória. Use algo legal, como 10000 ou 50000.

Dê uma olhada nos módulos carregados também. Você pode ter alguns módulos não utilizados e eles ficam com pouca memória em cada instância do processo. Embora a quantidade seja pequena, resume muito rapidamente.

Por fim, dê uma olhada nos seus registros. Veja se há algo estranho nos logs. Você pode descobrir que seu servidor está sofrendo um ataque, ou alguém instalou uma biblioteca com falha ou coisas assim.

    
por 22.08.2014 / 18:50
0

Por favor, verifique o parâmetro MaxRequestsPerChild se for 0 tentar alterá-lo para valorizar mais como 1000 (depende do tráfego). Informações fora da memória sugerem que você use PHP, verifique os valores memory_limit e max_execution_time no seu php.ini, talvez você deva aumentar / diminuir o tempo / memória. Por favor, forneça mais informações sobre a configuração do Apache / PHP e do aplicativo.

    
por 22.08.2014 / 19:50
0

O motivo do problema era uma grande fila de mensagens. A exclusão da fila resolveu o problema.

    
por 22.08.2014 / 23:03