Infraestrutura
Como configurar swap em VPS Linux sem erros
Aprenda como configurar swap em VPS Linux, definir o tamanho certo, ajustar swappiness, monitorar o uso e evitar erros de memória em produção na sua VPS.
Resposta direta
Para configurar swap em uma VPS Linux, crie um arquivo reservado, restrinja suas permissões, formate-o com mkswap, ative-o com swapon e registre a entrada em /etc/fstab. Em uma VPS com 1 GB de RAM, um swapfile de 1 GB a 2 GB costuma ser um ponto inicial razoável. Servidores com 2 GB a 4 GB podem começar com 1 GB ou 2 GB, desde que o consumo seja monitorado. O comando central é sudo fallocate -l 2G /swapfile, seguido por sudo chmod 600 /swapfile, sudo mkswap /swapfile e sudo swapon /swapfile. Depois, confirme a ativação com swapon --show e free -h.
Quando o swap realmente ajuda
Swap é uma área em disco usada pelo kernel Linux para retirar da RAM páginas de memória pouco acessadas. Isso cria uma margem para picos curtos, como uma atualização do sistema, um processo PHP temporariamente maior ou um build que consome 300 MB adicionais. Sem essa reserva, o kernel pode acionar o OOM Killer e encerrar processos para recuperar memória. Um banco de dados, worker ou servidor web pode ser a vítima, dependendo da pontuação calculada pelo kernel.
O swap não transforma disco em RAM rápida. Mesmo em armazenamento NVMe, o acesso é mais lento e tem latência maior que a memória física. Se uma aplicação utiliza 3 GB continuamente em uma VPS com 1 GB de RAM, adicionar 4 GB de swap tende a trocar uma falha imediata por lentidão intensa. Nesse cenário, reduza o consumo ou aumente a RAM. O artigo sobre como escolher CPU, RAM e NVMe ajuda a separar falta de memória, limitação de processamento e gargalo de disco.
Exemplos práticos deixam essa diferença clara. Um servidor Nginx com 1 GB de RAM pode usar 650 MB normalmente e tocar 100 MB de swap durante uma atualização, sem impacto perceptível. Já um Elasticsearch ocupando 2 GB em uma máquina de 1 GB provavelmente fará troca constante de páginas. Um terceiro caso é um VPS de laboratório que fica ocioso quase todo o dia, mas precisa de 1 GB extra durante uma compilação. Aqui, o swap funciona bem como proteção temporária.
Resumo rápido
- Verifique primeiro a RAM e o swap existentes com
free -heswapon --show. - Comece com 1 GB a 2 GB de swap em VPS pequenas, ajustando após observar o uso real.
- Use permissões
600para impedir a leitura do swapfile por usuários comuns. - Adicione o arquivo ao
/etc/fstabpara manter a ativação após reinicializações. - Configure
vm.swappinessentre 10 e 30 em servidores de aplicação como ponto inicial, não como regra universal. - Monitore atividade com
vmstat,top,sarou Prometheus, em vez de olhar apenas o total ocupado. - Aumente a RAM se houver leitura e gravação contínuas em swap durante carga normal.
Configuração recomendada em poucos passos
Antes de alterar o servidor, execute free -h, swapon --show e df -h /. O primeiro comando mostra memória disponível, o segundo revela áreas de swap já ativas e o terceiro confirma se existe espaço em disco. Criar um arquivo de 2 GB em uma partição com apenas 1,5 GB livres pode interromper serviços ou encher logs, por isso essa verificação vem antes dos comandos de criação.
Em Ubuntu e Debian usando ext4 ou XFS, o fluxo mais comum é reservar /swapfile, aplicar chmod 600, formatar com mkswap e ativar com swapon. Em AlmaLinux e Rocky Linux, os mesmos utilitários fazem parte do pacote util-linux e o procedimento é semelhante. Imagens mínimas podem não trazer todas as ferramentas, então confirme a presença com command -v mkswap e instale o pacote pelo gerenciador da distribuição se necessário.
Três cenários merecem decisões diferentes. Uma VPS de 1 GB executando Nginx, PHP-FPM e um site pequeno pode usar 1 GB ou 2 GB de swap como amortecedor. Uma instância de 4 GB para uma API Node.js pode começar com 1 GB e alertas de uso, porque o heap deve ser controlado pela aplicação. Um servidor de banco de dados com 8 GB exige mais cautela: swap excessivo pode esconder consultas, buffers ou conexões mal dimensionadas. A escolha entre distribuições e ecossistemas também interfere nas ferramentas disponíveis, tema abordado na comparação entre VPS Linux e VPS Windows.
Como dimensionar o swap da VPS
Não existe uma fórmula universal que obrigue o swap a ter o dobro da RAM. Essa recomendação surgiu quando computadores tinham pouca memória e não deve ser aplicada automaticamente a servidores atuais. O tamanho adequado depende da RAM disponível, do padrão de carga, do espaço em disco, da tolerância à lentidão e da necessidade de hibernação. VPS normalmente não usam hibernação, portanto não precisam reservar swap suficiente para armazenar toda a memória apenas por esse motivo.
Tamanho inicial por quantidade de RAM
A tabela abaixo apresenta pontos de partida, não limites rígidos. Os números assumem uma VPS sem hibernação e com armazenamento suficiente.
| Perfil da VPS | RAM instalada | Swap inicial sugerido | Swappiness inicial | Uso esperado |
|---|---|---|---|---|
| Site pequeno ou laboratório | 1 GB | 1 GB a 2 GB | 20 a 30 | Absorver atualizações, builds e picos curtos |
| API, WordPress ou automação leve | 2 GB | 1 GB a 2 GB | 10 a 20 | Evitar OOM durante tarefas ocasionais |
| Aplicação com workers | 4 GB | 1 GB a 2 GB | 10 | Margem para filas e deploys |
| Banco de dados ou produção maior | 8 GB ou mais | 1 GB a 4 GB | 1 a 10 | Proteção emergencial, com alertas rigorosos |
Uma VPS de 1 GB que usa 750 MB em repouso tem pouca margem. Um swapfile de 2 GB reduz o risco de encerramento durante um apt upgrade, mas a meta continua sendo manter a carga normal na RAM. Em uma máquina de 2 GB com Docker, três contêineres de 400 MB, mais 300 MB do sistema, já deixam pouco espaço para cache e picos. Nesse caso, 1 GB de swap pode proteger o host, enquanto limites como memory e memory_reservation impedem um contêiner de consumir tudo.
Swap não substitui memória física
Observe a memória disponível, não apenas a coluna de memória livre. O Linux usa RAM ociosa como cache de arquivos e pode recuperá-la quando uma aplicação precisa. Em free -h, a coluna available é mais útil que free para uma leitura rápida. Ter 80 MB livres e 700 MB disponíveis não indica necessariamente falta de memória.
Considere também o disco. Um swapfile de 4 GB em uma VPS com 20 GB pode consumir espaço necessário para logs, imagens Docker e backups temporários. Em armazenamento com IOPS limitadas, troca intensa concorre com banco de dados e arquivos da aplicação. Se o servidor grava centenas de megabytes no swap diariamente durante carga normal, investigue processos, limites e vazamentos antes de simplesmente ampliar o arquivo.
Como criar e ativar um swapfile
O procedimento abaixo funciona na maioria das instalações recentes de Ubuntu, Debian, AlmaLinux e Rocky Linux quando o sistema de arquivos aceita swapfiles convencionais. Execute os comandos com uma conta autorizada a usar sudo. Primeiro, confira se já existe uma área ativa para não criar arquivos redundantes:
free -h
swapon --show
findmnt -no FSTYPE /
df -h /
Criação do arquivo
Para criar um swapfile de 2 GB, use:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
fallocate reserva o espaço rapidamente. Se o sistema de arquivos ou a camada de armazenamento não aceitar o arquivo criado dessa forma, remova-o e use dd:
sudo rm -f /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
O chmod 600 permite leitura e escrita apenas pelo usuário root. Essa proteção é necessária porque páginas retiradas da RAM podem conter partes de processos e dados sensíveis. Após ativar, confirme o tamanho e o caminho:
swapon --show
free -h
cat /proc/swaps
Ativação e persistência
A ativação feita por swapon não sobrevive automaticamente a uma reinicialização. Antes de editar /etc/fstab, crie uma cópia:
sudo cp /etc/fstab /etc/fstab.backup
printf '/swapfile none swap sw 0 0\n' | sudo tee -a /etc/fstab
sudo findmnt --verify
Confira se a linha não foi adicionada duas vezes com grep -n swapfile /etc/fstab. Uma entrada duplicada pode gerar mensagens de erro no boot. Para testar sem reiniciar, execute sudo swapoff /swapfile apenas se houver RAM disponível e depois sudo swapon -a. Finalize verificando novamente com swapon --show.
Alternativa para Btrfs
Btrfs exige cuidados por causa de copy-on-write e compressão. Em versões recentes das ferramentas Btrfs, o comando específico reduz a chance de uma configuração incompatível:
sudo btrfs filesystem mkswapfile --size 2G /swapfile
sudo swapon /swapfile
Se esse subcomando não existir, consulte a documentação da versão instalada antes de desativar atributos manualmente. Não copie uma receita de ext4 sem validar o sistema de arquivos. Em VPS gerenciadas, confirme também se o provedor ou a imagem bloqueia swapon, algo possível em virtualização baseada em contêiner.
Como ajustar swappiness e pressão de cache
O parâmetro vm.swappiness influencia a preferência do kernel por recuperar páginas anônimas por meio de swap em comparação com outras formas de liberar memória. Ele não representa uma porcentagem direta da RAM e não significa que o swap começará exatamente quando o uso atingir determinado nível. O comportamento também depende da versão do kernel, do padrão de acesso e da pressão sobre o cache de arquivos.
Escolhendo um valor de swappiness
Consulte o valor atual com:
sysctl vm.swappiness
cat /proc/sys/vm/swappiness
Muitas distribuições usam 60 como padrão. Para um servidor web ou API com armazenamento mais lento, um valor entre 10 e 20 costuma ser um teste inicial conservador. Uma VPS de desktop remoto pode aceitar 30 ou 40 para mover aplicações inativas e preservar cache. Já um banco de dados sensível à latência pode começar em 1 ou 5, acompanhado de métricas. Definir zero não desliga completamente o swap em todos os kernels e pode limitar a capacidade do sistema de reagir a situações específicas.
Aplique um teste temporário com:
sudo sysctl vm.swappiness=10
Depois, execute a carga habitual. Em uma API, faça requisições durante 15 a 30 minutos e acompanhe vmstat 1. Em um servidor de automação, rode um fluxo representativo com múltiplas execuções. Em um host Docker, observe se os contêineres permanecem dentro dos limites de memória. Decida pelo comportamento medido, não apenas pelo total mostrado em free.
Configuração persistente com sysctl
Para preservar o valor após o boot, crie um arquivo dedicado:
printf 'vm.swappiness=10\n' | sudo tee /etc/sysctl.d/99-swap.conf
sudo sysctl --system
Outro parâmetro relacionado é vm.vfs_cache_pressure, que controla a tendência de recuperar caches de dentries e inodes. O padrão 100 funciona para muitos servidores. Reduzi-lo para 50 pode preservar metadados de arquivos, mas também retém memória que aplicações poderiam usar. Alterar swappiness e cache ao mesmo tempo dificulta descobrir qual ajuste produziu o efeito. Mude um parâmetro, registre o valor anterior e compare métricas.
Se o swap cresce pouco durante um pico e permanece ocupado depois, isso não prova um problema. O kernel pode manter páginas inativas no disco enquanto usa RAM para cache útil. O sinal preocupante é atividade constante nas colunas si e so do vmstat, combinada com aumento de latência, alto iowait ou encerramentos por falta de memória.
Como monitorar swap e diagnosticar gargalos
A presença de dados no swap não basta para diagnosticar lentidão. O servidor pode ter movido 200 MB de páginas inativas durante um pico ocorrido horas atrás e não estar acessando esse conteúdo agora. O diagnóstico correto combina ocupação, taxa de entrada e saída, memória disponível, espera por disco e comportamento da aplicação.
Leitura correta de free, vmstat e top
Comece com três comandos:
free -h
vmstat 1 10
top
Em vmstat, as colunas si e so mostram páginas lidas do swap e gravadas nele por segundo, conforme a unidade apresentada pela ferramenta. Valores zerados durante a maior parte do tempo são normais. Atividade contínua, como vários megabytes por segundo durante minutos, pode indicar thrashing. Observe também wa, que representa tempo de CPU esperando operações de entrada e saída. Swap ativo, wa alto e aumento no tempo de resposta formam um indício mais forte que qualquer métrica isolada.
No top, ordene por memória pressionando Shift+M. O htop, quando instalado, facilita a visualização, mas o consumo residente de um processo não conta toda a história. Para examinar um processo específico, use cat /proc/PID/status e procure VmRSS e VmSwap. Um worker com 700 MB residentes e 400 MB em swap pode estar inativo ou pode ter sido mal dimensionado. Compare esse dado com filas, requisições e tempo de execução.
Erros do OOM Killer aparecem no log do kernel. Consulte:
journalctl -k --since '1 hour ago' | grep -i -E 'oom|out of memory|killed process'
dmesg -T | grep -i -E 'oom|out of memory|killed process'
Alertas e métricas para produção
Em produção, acompanhe MemAvailable, SwapFree, páginas trocadas e eventos de OOM. Com Prometheus Node Exporter, métricas como node_memory_SwapTotal_bytes, node_memory_SwapFree_bytes, node_vmstat_pswpin e node_vmstat_pswpout permitem alertas baseados em tendência. O tutorial sobre monitoramento com Grafana e Prometheus ajuda a estruturar a coleta sem depender de verificações manuais.
Um alerta inicial pode disparar quando mais de 50% do swap estiver ocupado por 15 minutos, mas deve ser combinado com atividade de entrada e saída. Para uma VPS de 2 GB, outro alerta útil ocorre quando MemAvailable fica abaixo de 200 MB por dez minutos. Em um servidor de 8 GB, um limite percentual pode funcionar melhor. Teste os gatilhos durante deploys, backups e tarefas agendadas para reduzir falsos positivos.
Erros comuns, segurança e redimensionamento
A mensagem swapon failed: Operation not permitted geralmente aponta para restrição da plataforma, comum em ambientes baseados em contêiner. Nesse caso, ter acesso root dentro da instância não garante permissão do kernel hospedeiro. Consulte o tipo de virtualização e o suporte do provedor. Já swapon failed: Invalid argument pode estar ligado ao sistema de arquivos, a um arquivo esparso incompatível ou a recursos como copy-on-write.
Falhas de ativação
Verifique permissões e formato com:
ls -lh /swapfile
sudo file /swapfile
sudo swapon --verbose /swapfile
findmnt -no FSTYPE /
O arquivo deve pertencer a root e usar modo 600. Se chmod não foi aplicado, o swapon normalmente emite um aviso de permissões inseguras. Em Btrfs, use o método compatível com a versão instalada. Em uma imagem com swap preexistente, swapon --show pode revelar uma partição, um arquivo ou múltiplas áreas. Não remova a entrada antiga antes de entender como o boot foi configurado.
Swap também pode conter fragmentos de informações que estavam na RAM. Permissões corretas impedem leitura por usuários comuns, mas não protegem um disco copiado ou um snapshot acessado fora do sistema. Criptografia de volume reduz esse risco. O recurso e o método variam conforme o provedor e a distribuição, então confirme como a chave é gerenciada antes de aplicá-lo em produção.
Como aumentar ou remover o swap com segurança
Para trocar um arquivo de 2 GB por outro de 4 GB, confirme primeiro que a RAM disponível comporta as páginas ativas. swapoff pode falhar ou acionar forte pressão de memória se o servidor estiver cheio. Reduza a carga, pare workers dispensáveis ou faça a operação em janela de manutenção:
free -h
sudo swapoff /swapfile
sudo rm /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Como o caminho não mudou, a linha do /etc/fstab pode permanecer. Para remover definitivamente, execute swapoff, apague a entrada correspondente do fstab, valide com sudo findmnt --verify e só então remova o arquivo. Mantenha uma sessão SSH adicional aberta durante alterações de boot e não exponha chaves, tokens ou credenciais em comandos, logs e capturas de tela.
Recomendações por perfil
A configuração final deve acompanhar o risco operacional de cada ambiente. Um servidor de testes tolera lentidão ocasional. Uma API pública precisa de alertas e capacidade previsível. Um banco de dados pode sofrer muito antes de ficar sem memória, porque troca constante de páginas aumenta a latência de leitura e gravação.
Desenvolvedor solo
Em uma VPS de 1 GB ou 2 GB usada para projetos pessoais, homologação ou um site pequeno, comece com 1 GB de swap. Use 2 GB se builds, atualizações ou instalações de dependências gerarem picos. Configure vm.swappiness=20, acompanhe free -h e rode vmstat 1 enquanto executa a tarefa mais pesada do projeto. Um exemplo é uma aplicação Node.js que usa 450 MB, PostgreSQL com 250 MB e sistema com 300 MB. A soma já deixa pouca margem em 1 GB. O swap evita uma queda durante npm install, mas migrar para 2 GB de RAM será mais eficiente se esse pico ocorrer todos os dias.
Pequeno time
Para uma equipe com API, banco de dados e workers em uma VPS de 4 GB, reserve 1 GB a 2 GB de swap e aplique limites por serviço. Em Docker Compose, defina limites de memória compatíveis com a carga e evite permitir que um worker ocupe todo o host. Use vm.swappiness=10 como ponto inicial, monitore pswpin, pswpout, memória disponível e reinicializações de contêineres. Simule um deploy enquanto há tráfego de teste. Se a latência sobe apenas durante o build, movê-lo para CI pode resolver melhor que ampliar o swap. Se o banco cresce continuamente, revise conexões, buffers e consultas.
Aplicação em produção
Em produção, trate swap como proteção, não como capacidade regular. Uma VPS de 8 GB pode manter 2 GB de swap com swappiness entre 1 e 10, desde que alertas detectem atividade contínua. Registre uma linha de base por pelo menos sete dias, incluindo horários de pico, backups e tarefas agendadas. Defina um procedimento para responder a OOM, com identificação do processo, preservação de logs e critérios claros para aumentar RAM.
Antes de mudar recursos, compare custo, impacto e janela de manutenção. Separar banco e aplicação pode ser mais eficaz que adicionar memória ao mesmo host. Também considere limites de IOPS e espaço livre, pois swap, logs e banco disputam o mesmo armazenamento. Se houver crescimento previsível, planeje o upgrade antes de o swap virar uso diário. Preços, tipos de disco, regiões e limites de cada provedor mudam com frequência e precisam ser confirmados nas páginas oficiais antes de qualquer decisão comercial.
Perguntas frequentes
Quanto swap devo configurar em uma VPS com 1 GB de RAM?
Uma VPS com 1 GB de RAM pode começar com 1 GB a 2 GB de swap. Use 1 GB quando o servidor executa poucos serviços e mantém memória disponível durante a carga normal. Considere 2 GB se atualizações, builds ou workers provocam picos curtos. Esse espaço não substitui um upgrade de RAM. Se `vmstat` mostrar atividade constante em `si` e `so`, ou se a aplicação ficar lenta diariamente, reduza o consumo dos processos ou migre para um plano com mais memória física.
O swap deixa a VPS mais lenta?
O swap pode aumentar a latência quando o kernel precisa ler e gravar páginas no disco com frequência. Uma pequena ocupação, sem atividade contínua, não significa necessariamente lentidão. O problema aparece quando a carga depende do swap para funcionar, situação conhecida como thrashing. Monitore `vmstat 1`, observando `si`, `so` e `wa`, junto com o tempo de resposta da aplicação. SSD e NVMe ajudam nas operações de disco, mas continuam mais lentos que RAM e não corrigem consumo de memória mal dimensionado.
Qual valor de swappiness usar em um servidor Linux?
Para servidores web, APIs e aplicações gerais, valores entre 10 e 20 são pontos iniciais comuns. Bancos de dados sensíveis à latência podem testar valores entre 1 e 10. Ambientes de desktop ou máquinas com aplicações ociosas podem aceitar números maiores. O parâmetro não é uma porcentagem de RAM e seu efeito depende do kernel e da carga. Aplique uma alteração temporária com `sudo sysctl vm.swappiness=10`, execute um teste representativo e compare memória disponível, atividade de swap, I/O e latência antes de torná-la persistente.
Como saber se o swap está funcionando?
Execute `swapon --show` para listar áreas ativas e `free -h` para conferir os totais de memória e swap. O arquivo também deve aparecer em `/proc/swaps`. Para validar atividade, use `vmstat 1 10` e observe as colunas `si` e `so`. Se o arquivo estiver registrado em `/etc/fstab`, teste a configuração com `sudo findmnt --verify`. Uma validação completa inclui reinicialização em uma janela segura, seguida por nova consulta a `swapon --show`, especialmente depois de criar o swap pela primeira vez.
Posso criar swap em qualquer VPS Linux?
Nem toda VPS permite ativar swap. Instâncias com virtualização completa, como KVM, normalmente oferecem controle suficiente, mas a disponibilidade real depende da plataforma e da imagem. Ambientes baseados em contêiner podem bloquear `swapon` mesmo para root, retornando `Operation not permitted`. O sistema de arquivos também interfere. Ext4 e XFS costumam aceitar o procedimento convencional, enquanto Btrfs exige configuração compatível com copy-on-write. Verifique `findmnt -no FSTYPE /`, consulte a documentação do provedor e não altere o boot antes de confirmar essas condições.
Como limpar o swap sem reiniciar a VPS?
É possível executar `sudo swapoff /swapfile` e depois `sudo swapon /swapfile`, mas isso exige RAM suficiente para receber as páginas que estavam no disco. Verifique `free -h` antes da operação e reduza a carga se a memória disponível estiver baixa. Em produção, faça o procedimento durante uma janela de manutenção. Limpar o swap apenas para reduzir o número exibido por `free` raramente traz benefício. Se há troca constante de páginas, investigue vazamentos, limites de contêineres, workers, conexões e dimensionamento da VPS.
Fontes consultadas
- Linux Kernel Documentation, Swap · coletado em 02/10/2026
- Ubuntu Community Help Wiki, SwapFaq · coletado em 02/10/2026
- Red Hat Enterprise Linux Documentation, Configuring system memory capacity · coletado em 02/10/2026
- Btrfs Documentation, Swapfile · coletado em 02/10/2026