Tutoriais de VPS
Como otimizar VPS de pouca memória com ZRAM e Swap (2026): evitar OOM, lentidão e thrashing de disco
Em VPS de pouca memória 1C1G e 1C2G rodando WordPress, Docker ou bancos de dados, o problema mais comum não é CPU insuficiente, mas pressão de memória persistentemente alta, que acaba acionando o OOM Killer ou o thrashing de swap. Este artigo explica claramente as diferenças entre ZRAM, swapfile e zswap, fornece passos de configuração diretamente executáveis para Debian/Ubuntu, e cobre swappiness, prioridades, monitoramento e métodos de reversão.

Como otimizar VPS de pouca memória com ZRAM e Swap (2026): evitar OOM, lentidão e thrashing de disco
Muitos VPS baratos são 1C1G ou 1C2G. Logo após instalar o sistema parecem suficientes, mas assim que Nginx, PHP-FPM, MySQL, Redis, Docker ou backups agendados rodam ao mesmo tempo, a memória rapidamente enche. Os sintomas típicos são: SSH fica lento, o site ocasionalmente retorna 502, o banco de dados é morto, contêineres Docker saem sem motivo, e em dmesg ainda é possível ver Out of memory: Killed process.
Neste ponto, dizer "simplesmente adicione mais memória" é claro que está correto, mas nem sempre é realista. Para VPS anuais de baixo custo, máquinas de teste, blogs pequenos e serviços de API leves, uma abordagem mais prática é: usar ZRAM para comprimir a memória fria antecipadamente, e depois manter um pequeno swapfile como reserva. Isso não transformará 1GB de memória em 4GB, mas pode reduzir significativamente a probabilidade de OOM e dar ao sistema espaço de amortecimento durante picos curtos de memória.
| Cenário | Recomendação |
|---|---|
| VPS de pouca memória 1GB / 2GB | Habilitar ZRAM primeiro, depois adicionar um pequeno swapfile como reserva |
| Bancos de dados, PHP-FPM com picos ocasionais | ZRAM é muito adequado, reduz o OOM causado por picos curtos |
| Falta real de memória a longo prazo | ZRAM apenas mitiga; no final ainda é preciso reduzir o uso da configuração ou atualizar a memória |
| I/O de disco já alto | Não depender de um swapfile grande, ou piorará o thrashing de disco |
| VPS SSD barato | Um swapfile é aceitável, mas não o trate como memória de execução a longo prazo |
Em resumo: ZRAM é um "buffer de memória comprimida", swapfile é uma "reserva em disco". O primeiro é rápido, o segundo é lento; o primeiro é mais adequado para o buffer diário em VPS de pouca memória, o segundo para evitar que o sistema trave instantaneamente.
Não se apresse em mudar a configuração. Use os seguintes comandos para confirmar o gargalo atual:
free -h
vmstat 1 10
swapon --show
journalctl -k --since "24 hours ago" | grep -i "out of memory\|killed process"
Foque em três coisas:
availablepermanece muito baixo por muito tempo, por exemplo, restam apenas algumas dezenas de MB.si/soemvmstattem valores continuamente, indicando que o sistema está trocando frequentemente.- Os logs do kernel mostram
Killed process, indicando que o OOM Killer já agiu.
Se a memória só tem picos ocasionais, ZRAM é muito adequado; se está fazendo swap o dia todo, não é um problema de ajuste, mas um descompasso entre a configuração da aplicação ou as especificações da máquina.
Muitos tutoriais misturam esses conceitos, mas na verdade não são a mesma coisa.
- ZRAM: Cria um dispositivo de bloco comprimido na memória; os dados trocados ainda residem na memória, mas ocupam menos espaço após a compressão. É rápido e adequado para VPS de pouca memória.
- Swapfile: Usa um arquivo de disco como espaço de troca. As vantagens são simplicidade e confiabilidade; as desvantagens são lentidão e fácil thrashing de I/O de disco.
- Zswap: Um cache comprimido em nível de kernel, frequentemente usado como camada de compressão antes do swap em disco. É mais de baixo nível, mas o custo de solução de problemas e explicação é maior.
Para a maioria dos usuários de VPS Debian/Ubuntu, a solução preferida é: ZRAM + pequeno swapfile. Isso proporciona tanto velocidade quanto uma reserva final.
A maneira mais simples no Debian e Ubuntu é instalar zram-tools:
sudo apt update
sudo apt install -y zram-tools
Edite o arquivo de configuração:
sudo nano /etc/default/zramswap
Recomenda-se começar com uma configuração conservadora:
ALGO=zstd
PERCENT=75
PRIORITY=100
Se você tem 1GB de memória, PERCENT=75 criará aproximadamente um dispositivo ZRAM de 768MB; se tem 2GB, aproximadamente 1.5GB. Não configure 200% ou 300% de imediato; a compressão não é mágica gratuita, e a CPU e o gerenciamento de memória também têm custos.
Reinicie o serviço e verifique:
sudo systemctl restart zramswap
zramctl
swapon --show
Se você vir /dev/zram0 com prioridade maior que o swap normal, o ZRAM está habilitado.
Mesmo com o ZRAM habilitado, ainda recomendo manter um pequeno swapfile. A razão é simples: quando a memória comprimida também está cheia, o sistema ainda tem um buffer final e não matará processos diretamente.
Criar um swapfile de 1GB:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Escrever em /etc/fstab:
echo '/swapfile none swap sw,pri=10 0 0' | sudo tee -a /etc/fstab
O pri=10 aqui é fundamental: faça sua prioridade menor que a do ZRAM. O sistema usará o ZRAM primeiro e só recorrerá ao swap em disco sob maior pressão.
Verificar prioridades:
swapon --show
Você deve ver o ZRAM com prioridade maior e o swapfile com prioridade menor.
vm.swappiness determina com que agressividade o Linux usa swap. O swap tradicional em disco geralmente recomenda um valor mais baixo, como 10 ou 20. Mas o ZRAM é rápido, e se configurado muito baixo, o sistema pode ainda esperar até perto do OOM antes de trocar.
Para VPS de pouca memória com ZRAM habilitado, recomendo começar assim:
sudo sysctl vm.swappiness=100
Escrever configuração persistente:
echo 'vm.swappiness=100' | sudo tee /etc/sysctl.d/99-zram-swap.conf
sudo sysctl --system
Se você achar que a CPU é fraca e a compressão adiciona carga extra, pode baixar para 60; se os picos de memória são frequentes e a CPU ainda tem folga, tente 120. Não copie cegamente um valor fixo; o importante é observar o estado real após as mudanças.
Após a configuração, use os seguintes grupos de comandos para observar por 1-2 dias:
free -h
zramctl
swapon --show
vmstat 1 10
journalctl -k --since "24 hours ago" | grep -i "out of memory\|killed process"
Em circunstâncias normais, você quer ver:
- Dados comprimidos em
zramctl, mas não persistentemente 100% cheios. swapfileraramente usado, ou apenas brevemente durante picos.si/soemvmstatsem picos persistentes.- Sem registros de OOM Killer nas últimas 24 horas.
Se o ZRAM está persistentemente cheio e o swapfile também continua crescendo, a máquina é genuinamente insuficiente. Continuar adicionando swap só deixará o site mais lento; a abordagem correta é reduzir o uso do serviço ou atualizar a configuração.
Errado. Configurar 8GB de swap em um VPS de pouca memória muitas vezes apenas transforma "processos sendo mortos" em "a máquina inteira travando". O swap é uma reserva, não uma expansão de memória.
ZRAM é um dispositivo de swap comprimido na memória que desaparece após a reinicialização, mas o swap nunca foi armazenamento persistente de qualquer forma. Os dados do seu negócio devem estar em disco, em bancos de dados e em backups, não dependendo do swap.
ZRAM apenas mitiga a pressão; não pode substituir o ajuste de aplicações. O buffer do MySQL, os workers do PHP-FPM, os limites de memória do Node.js e os limites de contêineres Docker precisam ser considerados juntos.
| Memória VPS | Tamanho ZRAM | swapfile | swappiness | Observações |
|---|---|---|---|---|
| 512MB | 50%-75% RAM | 512MB | 80-100 | Adequado apenas para serviços muito leves |
| 1GB | 75%-100% RAM | 1GB | 100 | Ponto de partida recomendado para blogs pequenos, APIs leves |
| 2GB | 75% RAM | 1-2GB | 80-100 | Adequado para WordPress + banco de dados pequeno |
| 4GB+ | 50% RAM | 1-2GB | 60-100 | Mais para prevenção de picos, não uma dependência central |
Se você achar que o uso de CPU aumenta ou a latência piora após a configuração, pode reverter diretamente.
Desabilitar ZRAM:
sudo systemctl stop zramswap
sudo systemctl disable zramswap
Excluir swapfile:
sudo swapoff /swapfile
sudo rm /swapfile
sudo nano /etc/fstab
Basta remover a linha /swapfile de /etc/fstab.
Para VPS de pouca memória, a estratégia mais confiável não é simplesmente "habilitar swap", mas uma abordagem em três etapas:
- Usar ZRAM para lidar com picos de memória de curto prazo.
- Usar um pequeno swapfile como reserva final.
- Usar limites em nível de serviço para controlar o uso residente de MySQL, PHP-FPM e Docker.
Se você só tem OOM ocasionalmente, esta solução geralmente é muito eficaz; se o seu negócio depende do swap para se manter vivo a longo prazo, é hora de atualizar a memória ou dividir o banco de dados. O objetivo da otimização não é fazer o VPS nunca reportar erros, mas torná-lo estável, observável e reversível sob carga razoável.