A execução top
no modo em lote para relatar tamanhos de memória periodicamente pode ser usada para ver quem está usando a memória quando as coisas vão para o sul. A execução sar
no modo em lote deve fornecer bons diagnósticos sobre o uso da memória e E / S relacionadas. A execução munin
para monitorar o sistema deve fornecer um gráfico com bons detalhes sobre o uso da memória. Isso pode ajudar bastante.
Você pode usar o limits.conf para limitar o tamanho máximo do núcleo dos programas. Definido corretamente, isso deve matar todos os programas que estão vazando memória. Isso funciona com o módulo pam_limits. Os limites também podem ser definidos com o ulimits
comando
Você está executando alguns programas que podem usar grandes quantidades de memória. Algumas coisas que você pode ver incluem.
- Os aplicativos mal programados em execução
apache2
podem vazar memória. Você deve ver o tamanho da memória aumentar quando isso acontece. Você pode ajustar o apache2 para reciclar filhos após um certo número de usos, definindo MaxRequestsPerChild
para 100 ou mais. Se isso resolver o problema, será necessário resolver o vazamento. Eu assistiria isso primeiro.
- O MySQL pode tentar carregar dados na memória. Se você tem muitos dados na memória, isso pode causar algum problema, mas não deve ser tão dramático quanto você está vendo.
- Se você tiver um
tmpfs
sistema de arquivos grande montado, poderá vazar memória se os arquivos não forem excluídos quando usados. Arquivos grandes e de longa duração também podem ser um problema.
- Se o problema ocorrer aproximadamente na mesma hora do dia, você pode ter um programa agendado que está vazando memória.
- Se você possui um programa que aloca memória compartilhada, mas não a libera antes de sair, haverá um vazamento de memória relativamente invisível. Se a memória compartilhada estiver bloqueada na memória, poderá forçar a troca. A quantidade de memória compartilhada disponível é geralmente relativamente limitada.
- O pacote liquidsoap + icecast pode ter problemas de buffer que usam memória. Como não usei essa combinação, não tenho certeza de como isso seria exibido.
Uso normal da memória: A memória livre não é algo que você deseja muito. Se o seu sistema estiver em funcionamento há muito tempo e tiver muita memória livre, algo está errado. Toda vez que você lê ou grava um arquivo, os blocos entram no cache do buffer. Isso reduzirá sua memória livre e é uma coisa boa. O sistema manterá espaço livre suficiente para iniciar alguns programas sem procurar memória em outro lugar. Como muitos programas são executados rapidamente, sua memória será retornada ao pool livre quando eles pararem de executar.
Quando você lê um arquivo que está no cache do buffer, nenhum acesso ao disco é necessário e a leitura é resolvida no cache do buffer. As gravações usam um mecanismo semelhante. Se o seu sistema precisar de memória, o cache do buffer será um dos primeiros locais usados. A maioria dos buffers pode ser liberada imediatamente.
Se houver um vazamento de memória, você verá a memória livre e os buffers começarem a encolher. Isso ainda não é um problema grave, pois a memória vazada deve ser movida para trocar espaço. Seu sistema ainda funcionará bem até você preencher o espaço de troca e reduzir o espaço livre restante até o ponto em que os programas não podem ser iniciados. É típico que uma pequena quantidade de espaço de troca possa ser usada.