O que é o OOM Killer no Linux?
O OOM Killer Linux (Out Of Memory Killer) é um mecanismo do Linux kernel que entra em ação quando a memória RAM do servidor se esgota completamente.
Quando não há mais memória disponível para alocação, o kernel precisa liberar recursos imediatamente. Para isso, ele seleciona e finaliza um processo com base em um cálculo chamado OOM Score.
Na prática: ele “mata” um processo para impedir que o sistema inteiro trave.
Por que o OOM Killer mata o MySQL?
Serviços de banco de dados como:
- MySQL
- MariaDB
costumam consumir muita memória RAM — principalmente em ambientes com WordPress, múltiplos sites ou tráfego elevado.
O processo mysqld frequentemente recebe um OOM Score alto porque:
- Usa muita memória residente (RSS)
- Possui buffers grandes configurados
- Mantém múltiplas conexões abertas
Quando a RAM acaba, o banco vira um alvo provável.
Como identificar se o OOM Killer foi acionado
1️⃣ Verifique os logs do kernel
dmesg -T | grep -i kill
Ou:
journalctl -k | grep -i oom
Exemplo de saída:
Out of memory: Kill process 1234 (mysqld) Killed process 1234 (mysqld)
Se essa mensagem aparecer, o OOM Killer Linux foi ativado.
2️⃣ Consulte o OOM Score
cat /proc/$(pidof mysqld)/oom_score cat /proc/$(pidof mysqld)/oom_score_adj
Quanto maior o número, maior a probabilidade do processo ser finalizado.
Principais causas do OOM Killer matar o MySQL
🔴 1. Buffer pool mal dimensionado
Configuração perigosa:
innodb_buffer_pool_size = 6G
Em um servidor com 8GB totais.
Isso deixa pouco espaço para:
- PHP-FPM
- Nginx / Apache
- Cache do sistema
- Kernel
Regra prática:
- Servidor dedicado para banco → 60–70% da RAM
- Servidor compartilhado → 30–50%
🔴 2. Ausência de swap
Sem swap, quando a RAM acaba, o OOM Killer Linux é acionado imediatamente.
Verifique:
swapon --show
Se não houver swap ativo, o risco é alto.
🔴 3. Excesso de processos PHP-FPM
Cada worker pode consumir entre 50MB e 150MB.
Exemplo:
30 processos × 100MB = 3GB de RAM
Isso reduz drasticamente a margem de segurança.
🔴 4. Ataques ou picos de tráfego
Sem rate limiting no Nginx ou firewall adequado, o consumo de memória pode disparar.
Como evitar que o OOM Killer mate o MySQL
✅ 1. Configure swap corretamente
fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile
Adicione ao /etc/fstab para persistir após reboot. /swapfile swap swap sw 0 0
✅ 2. Ajuste o swappiness
sysctl vm.swappiness=10
Persistente:
echo "vm.swappiness=10" >> /etc/sysctl.conf
Isso reduz o uso agressivo de swap.
✅ 3. Ajuste corretamente o MySQL/MariaDB
Revise:
innodb_buffer_pool_sizemax_connectionstmp_table_sizejoin_buffer_size
⚠️ Atenção: alguns buffers são multiplicados por conexão.
✅ 4. Controle o PHP-FPM
No www.conf(dependendo da sua distribuição linux e painel o nome pode ser outro):
pm = dynamic pm.max_children = 20
Cálculo recomendado: Clique aqui e veja PHP-FPM: Como Calcular pm.max_children Corretamente
RAM disponível / consumo médio por processo
✅ 5. Ajuste o OOMScore do MySQL (opcional)
Para reduzir a chance do banco ser morto:
echo -5 > /proc/$(pidof mysqld)/oom_score_adj
Ou via systemd:
systemctl edit mysqld
Adicionar:
[Service] OOMScoreAdjust=-5
Use com cautela — outro serviço pode ser finalizado no lugar.
Monitoramento preventivo
Ferramentas como:
- Zabbix
- Prometheus
- Grafana
permitem:
- Alertas antes da RAM esgotar
- Visualização de tendência
- Detecção de memory leaks
Conclusão
O OOM Killer Linux não é um erro — é um mecanismo de proteção.
Se ele matou seu MySQL, a causa normalmente é:
- Superdimensionamento do banco
- Falta de swap
- Excesso de processos PHP
- Falta de monitoramento
Infraestrutura estável é infraestrutura dimensionada corretamente.
FAQ
É um mecanismo do kernel que finaliza processos quando a memória RAM acaba, evitando que o sistema trave completamente.
Porque geralmente consome muita memória e recebe um OOM Score alto.
Ajuda significativamente, pois cria uma margem antes da RAM esgotar totalmente.
É possível reduzir a probabilidade ajustando o oom_score_adj, mas isso deve ser feito com cautela.
[Precisa de ajuda com outro problema?
Nossa equipe está disponível 24 horas por dia, 7 dias por semana .]
Veja Mais:
CPU ociosa com sistema lento: como identificar gargalos reais no servidor
OOM Killer no Linux: Por que o MySQL é morto e como evitar
Processos Zumbis: O que são e como limpar a tabela de processos

