Tempo de leitura: 4 minutos
Um processo pesado demais, um pico de acesso inesperado, um script que vaza memória aos poucos. Qualquer um desses cenários pode fazer uma VPS ficar sem RAM disponível. Quando isso acontece sem nenhuma rede de segurança, o sistema começa a encerrar processos à força (o chamado OOM killer) para não travar completamente, e nem sempre escolhe o processo certo para matar. A swap memory na VPS Linux é essa rede de segurança: um espaço em disco que o sistema usa como memória de emergência quando a RAM se esgota.
Este guia explica o que é swap, como verificar se a sua VPS já tem uma configurada e como criar um arquivo de swap do zero.
O que é memória swap e quando ela ajuda
Swap é um espaço reservado em disco que o Linux usa como extensão da memória RAM. Quando a RAM real fica cheia, o sistema move para o disco os dados menos usados no momento, liberando espaço para o que está em uso ativo. Disco é muito mais lento que RAM, então swap não é um substituto de memória de verdade. É um amortecedor. Ele evita que o servidor trave ou mate processos abruptamente diante de um pico pontual, dando tempo para a situação se normalizar ou para você agir.
Faz sentido especialmente em VPS com pouca RAM (1 GB ou 2 GB) rodando aplicações que ocasionalmente picam de uso. Um container Docker subindo, um processo de backup, um comando de build. Em servidores com bastante RAM sobrando, o ganho é menor, mas ainda vale como proteção contra o inesperado.
Como verificar se sua VPS já tem swap
Antes de criar uma, confira se já existe:
free -h
Se a linha Swap mostrar 0B em todas as colunas, não existe swap ativa. Outra forma de conferir, mais direta:
swapon --show
Se o comando não devolver nada, o mesmo diagnóstico: sem swap configurada.
Como criar um arquivo de swap
O caminho mais simples é criar um arquivo dedicado (em vez de uma partição separada, que exigiria reparticionar o disco). O exemplo abaixo cria 2 GB de swap. Ajuste o tamanho conforme a seção seguinte:
sudo fallocate -l 2G /swapfile
Se o fallocate não estiver disponível na sua distribuição, o comando dd faz o mesmo, só que mais devagar:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
Depois de criado o arquivo, restrinja a permissão (só o root deve poder ler), formate como swap e ative:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Confirme que ativou com free -h de novo. Para a swap sobreviver a um reinício do servidor, adicione a linha abaixo no final do arquivo /etc/fstab:
/swapfile none swap sw 0 0
Sem essa linha, a swap criada some no próximo reboot e é preciso repetir o processo.
Qual tamanho de swap faz sentido
Não existe uma regra única, mas uma referência prática: para servidores com até 2 GB de RAM, uma swap do mesmo tamanho da RAM (ou até o dobro) costuma fazer sentido. Para servidores com mais RAM (8 GB ou mais), uma swap menor (algo entre 1 GB e 4 GB) já cobre picos ocasionais sem ocupar espaço de disco à toa.
Também vale ajustar o swappiness, o parâmetro que controla o quão agressivo o Linux é para usar swap mesmo com RAM ainda disponível. O padrão de muitas distribuições (60) tende a usar swap cedo demais em um servidor; baixar para algo entre 10 e 20 faz o sistema preferir a RAM e só recorrer à swap quando for realmente necessário:
sudo sysctl vm.swappiness=10
Para manter esse valor depois de um reinício, adicione vm.swappiness=10 no arquivo /etc/sysctl.conf.
Swap não substitui upgrade de RAM
Swap é uma rede de segurança contra picos pontuais, não uma solução para uso de memória constantemente no limite. Se o free -h mostra a swap sendo usada o tempo todo, e não só em momentos isolados, isso é sinal de que a RAM contratada já não é suficiente para a carga real do servidor. Nesse caso, o caminho é mesmo aumentar a RAM, e não depender de disco (bem mais lento) para rodar a aplicação no dia a dia. Veja como fazer isso em como fazer upgrade ou downgrade do seu servidor VPS na Rubfy.
O comportamento da swap segue o padrão descrito na documentação oficial do kernel Linux, então funciona da mesma forma em qualquer distribuição rodando numa VPS.