
Estou executando um servidor Linux que mostra padrões estranhos de uso de memória que estou tentando investigar.
Durante a operação normal, cerca de 200 MB de memória são usados para aplicativos de acordo com Munin, mas de vez em quando (talvez a cada dois dias), há um aumento repentino de cerca de 1 GB, conforme visível neste gráfico:
Tenho tentado encontrar a causa disso, mas não tenho certeza do que poderia ser. O fato de munin atribuir essa memória a “apps” sugere-me que um dos processos em execução está simplesmente usando muita memória, mas olhar para cima quando isso acontece mostra que nenhum dos processos usa tanta memória; na verdade, os 15 principais processos que consomem memória não mudam quando isso ocorre e o principal usa apenas 2,2% da memória. Além disso, as informações de memória do ps não somam tanta memória, mas sim algo em torno de 200 MB.
A altura do aumento geralmente é a mesma e, como é visível neste exemplo, simplesmente desaparece após algumas horas.
Descobri que uma maneira confiável de acionar esse comportamento é baixar um arquivo grande (1,4 G) usando o wget por meio de um túnel ssh pela rede para o disco local (a atividade de rede por si só não o aciona).
Para ver o uso de memória com mais detalhes, comecei a registrar /proc/meminfo
a cada 10 segundos e fiz umtarball com gráficos desses dados. O download que causou o comportamento em questão começou às 10h35:32 e terminou às 10h38:53. Os dados de log originais também estão incluídos no tarball.
Em /proc/meminfo
, não há valor que suba o suficiente para explicar essa enorme diminuição de memória livre (isso é essencialmente o que munin atribui aos “apps”), o que me deixa sem noção. A quantidade de memória usada relatada pelo munin também é relatada por free e top, mas não há processos na lista de processos que possam explicar esse alto uso de memória ou o aumento repentino ao baixar um arquivo.
O que estou tentando entender é:
- É normal que o uso da memória se comporte dessa maneira sem nenhum processo específico usando o aumento da memória?
- Quais poderiam ser outras fontes de memória que não são contabilizadas
/proc/meminfo
?
Ou isso poderia ser um sinal de que o sistema está comprometido?
Responder1
munin é ótimo para gráficos, mas não informa qual aplicativo causou a carga.
Pode-se usar top - top avançado.
no topo registra o arquivo de log bruto, e é possível abrir esse arquivo e ir e voltar interativamente no tempo e ver o que estava acontecendo em algum momento específico.
ator -r /var/log/atop_oame_date
do que usar as teclas t
e T
você pode voltar ao momento da atividade suspeita e ver o que estava acontecendo lá.
Responder2
Seu sistema não está sob pressão de memória física. Portanto, quando você tenta transferir um arquivo de 1,4 GB, ele usa 1,4 GB de memória. Seu sistema tem duas opções: pode desperdiçar totalmente a memória ou usá-la de forma ineficiente. Ele escolhe o último. Este é um comportamento normal.