Como aliviar memória no ubuntu

Estou usando Ubuntu 16 para rodar alguns serviços em containers docker.
o problema é quando o sistema é usado o consumo da memoria cresce exponencialmente ate o sistema no docker travar mas o servidor nao trava, ai devo esperar um pouco ou reiniciar o docker.

Mesmo limpando a memoria cache nao resolve.
veja a imagem


No momento sao 19gb usadas e vai crescendo ate encher.
Como esvaziar a memoria usada?
ou como balancear isso?

1 curtida

Aumenta essa swap ai cara… só 975M pó.
Isso dai é servidor?
Cria um log da RAM ai para agente ter os dados do que acontece com a maquina.
Isso dai está crescendo infinitamente? se for bug do software tem que ser corrigido pelo desenvolvedor do mesmo.

Sim a memoria continua crescendo infinitamente,

Já tento aumentar a swap para 31GB? a então deve ser bug, eu não sei qual é a memória necessária para rodar o seu programa, mas se está excedendo muito do nada, então tem que ser corrigido pelo desenvolvedor.

A menos que você tenha tantos requisições de usuários que o servidor não tenha hardware o suficiente, pode ser um leak de RAM de alguma aplicação.

Recomendo, se possível, usar um Ubuntu mais recente também. Não sei se você paga pelos patches ou em que contexto está a máquina, mas o Ubuntu 16.04, mesmo na melhor das hipóteses, já está quase batendo nos 10 anos. Considere uma migração eventualmente.

O negócio é investigar o que está fazendo o consumo da RAM aumentadar assim, não parece ser um comportamento normal.

Falta só mais 1 ano e o suporte estendido já era.

1 curtida

Sim, isso se a pessoa paga pelo suporte estendido. Não sei se é o caso.

Não sei se isso se aplica, mas a Canonical consegue estender ainda mais o suporte mediante a pagamento especial, até us 12 anos.

De toda forma, pode ser interessante uma atualização, tem muita otimização em versões recentes.

Vejam so reiniciei a maquina e a memoria usada estava nos 4gb e agora esta sendo usado a memoria esta subindo agora esta nos 9gb


existem dois conteiners um roda tomcat e outro mysql.

e neste servidor apenas dois clientes usam não mais que isso.

Dos 32gb que a maquina tem que consumir a memoria e liberar quando ela nao for mais usada, mas o consumo é exponencial.

@justin O que eu posso te sugerir caso esteja tendo um vazamento de memória como disse o @Dio.
Nesse caso só os desenvolvedores do programa pode resolver, a menos que ele seja software livre, mas se não for.
Então vc tem que escrever um programa ou um shell script, pode ser Bash, que ele monitore o consumo de memória do computador, e quando chegar próximo de travar ele mate o processo antes disto acontecer, e ai o programa deve ser reaberto para continuar as suas tarefas.
Parece que já existe programa que monitora a RAM e mata o processo, se vc usar ele, vc teria apenas que monitorar quando o programa foi fechado para o script shell reabrir ele novamente, e ai ficar nesse loop infinito ate sair a correção.

Obrigado pela dica vou fazer o upgrade!
o consumo nao é normal.

eu desconfio o tomcat

Marca uma melhor resposta ai e abraço, qualquer coisa abre outro tópico.

Certo!
vou implementar isso.

Isso tá parecendo um leak de memória, ve se resolve:

# Sincroniza a escrita no FS
sync
# Cache
echo 1 | sudo tee /proc/sys/vm/drop_caches
# inodes e estururas de diretórios em cache corrompidos
# Lembra que a gente sincronizou
echo 2 > /proc/sys/vm/drop_caches
# Limpa o cache de paginação
echo 3 > /proc/sys/vm/drop_caches

Se isso não resolver, é vazamento de memória e se resolver é um problema de acumulo de lixo de memória, eu chutaria algum serviço em Java

Criei uma rotina que faz a limpeza do buffer.
mas nao resolve

É se fechar o programa não limpa a memória, então eu não sei o que fazer. Só reiniciando, se o código script tiver que reiniciar o PC e quando o PC for reiniciado o docker automaticamente, então ficará muito demorado para reabrir o programa, não sei se isso vai servir.