Rain WikiWindows · Linux · Android

OOM killer

ConceitoTodas as distribuições Linux

O OOM (out-of-memory) killer é a parte do kernel do Linux que encerra um processo quando o sistema fica sem memória e não consegue liberar nenhuma. Ele escolhe o processo pela sua pontuação OOM, geralmente aquele que está usando mais memória. O log do kernel registra cada encerramento por OOM.

1Como a vítima é escolhida

Cada processo tem uma pontuação em /proc/<pid>/oom_score que aumenta com o uso de memória. O arquivo /proc/<pid>/oom_score_adj, de -1000 a 1000, faz o ajuste; -1000 significa que o processo nunca será escolhido.

2Encontrando encerramentos por OOM

O kernel escreve 'Out of memory: Killed process' em seu log. journalctl -k | grep -i oom ou dmesg | grep -i oom exibem essas mensagens, com o nome do processo e seu uso de memória.

3Prevenção

Adicione memória ou swap, limite serviços que consomem muita memória ou defina limites por serviço com opções do systemd, como MemoryMax=. Algumas distribuições também executam o systemd-oomd, que atua mais cedo com base na pressão de memória.

Como investigar um encerramento por OOM

  1. Pesquise no log do kernel: journalctl -k | grep -i -A5 'out of memory'
  2. Anote o processo encerrado e seu tamanho de memória.
  3. Verifique a memória e o swap atuais: free -h
  4. Encontre os maiores processos: ps aux --sort=-rss | head
  5. Adicione swap ou limite o serviço e observe se o problema ocorre novamente.

Cuidados

  • Definir o oom_score_adj como -1000 para muitos processos pode deixar o kernel sem uma escolha segura.
  • Desativar a proteção contra overcommit de memória sem compreendê-la pode causar falhas em outros lugares.

Fontes

  1. Página de manual proc(5): oom_score e oom_score_adj man7.org
  2. Gerenciamento de Out Of Memory (kernel.org) kernel.org

Observação: O RainServer oferece monitoramento e limpeza segura para servidores Linux; ele mostra o que será alterado e solicita confirmação antes.

Última revisão: