vps-linux/Artigo

    Swap na VPS Linux: quando e como configurar

    Swap é espaço em disco usado como extensão da RAM quando a memória física acaba. Em VPS com Docker, swap evita que o OOM killer (Out Of Memory killer) mate processos aleatórios quando a memória enche. Mas swap em SSD é lento — é um safety net, não um substituto para RAM insuficiente. Configure para proteger o sistema, não para compensar falta de memória.

    Verificar se já existe swap configurado

    VPS Ubuntu da Runstack não vêm com swap por padrão. Verifique a situação atual:

    bash
    # Ver memória e swap disponíveis
    free -h
    
    # Detalhe do swap
    swapon --show
    
    # Se não aparecer nada no swapon --show, não há swap configurado
    # Verificar pelo arquivo de swap
    ls -lh /swapfile 2>/dev/null || echo "Sem swapfile"

    Criar swapfile (método mais simples)

    Swapfile é um arquivo regular usado como swap — mais flexível que uma partição dedicada e pode ser criado sem reparticionar o disco:

    bash
    # Criar swapfile de 2 GB (ajuste o tamanho conforme necessário)
    sudo fallocate -l 2G /swapfile
    
    # Definir permissões corretas (somente root)
    sudo chmod 600 /swapfile
    
    # Formatar como swap
    sudo mkswap /swapfile
    
    # Ativar o swap imediatamente
    sudo swapon /swapfile
    
    # Verificar se está ativo
    swapon --show
    free -h
    
    # Tornar permanente (sobrevive a reboot)
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    Dica
    fallocate é mais rápido que dd para criar o swapfile. Se fallocate não disponível (sistemas de arquivos btrfs): sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress.

    Configurar swappiness

    swappiness controla com que agressividade o kernel move dados da RAM para swap. O padrão (60) é alto para servidores — reduza para usar swap apenas em emergências:

    bash
    # Ver swappiness atual (padrão: 60)
    cat /proc/sys/vm/swappiness
    
    # Definir swappiness = 10 (só usa swap quando RAM > 90% ocupada)
    sudo sysctl vm.swappiness=10
    
    # Tornar permanente
    echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
    
    # Para VPS com SSD NVMe — também ajustar vfs_cache_pressure
    # (mantém mais metadados de sistema de arquivos em RAM)
    echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    Dica
    swappiness=1 é o mínimo prático — o kernel usa swap apenas para evitar OOM. swappiness=0 desabilita completamente o uso do swap (exceto para evitar OOM), o que pode ser perigoso em VPS com RAM muito limitada.

    Dimensionamento: quanto swap configurar

    A quantidade de swap depende da RAM total e do uso:

    bash
    # Regras gerais:
    # RAM 1 GB  → swap 2 GB  (100% de cobertura extra)
    # RAM 2 GB  → swap 2 GB  (safety net simples)
    # RAM 4 GB  → swap 2 GB  (não precisa de muito)
    # RAM 8 GB+ → swap 1-2 GB ou nenhum (com monitoramento ativo)
    
    # Verificar se o swap está sendo usado (% de uso)
    free -h
    # Se "Swap: used" > 0, a RAM real está chegando no limite
    # Se swap usado > 50%, considere fazer upgrade de RAM
    
    # Monitorar uso de swap por processo
    for file in /proc/*/status; do
      awk '/VmSwap/{swap=$2} /Name/{name=$2} END{if(swap>0)print name, swap"kB"}' "$file"
    done 2>/dev/null | sort -k2 -rn | head -10

    Remover o swap (quando não é necessário)

    Se você fizer upgrade de RAM ou decidir que o swap não é necessário, remova corretamente:

    bash
    # Desativar o swap imediatamente
    sudo swapoff /swapfile
    
    # Verificar que está desativado
    swapon --show   # deve estar vazio
    
    # Remover do fstab
    sudo sed -i '/swapfile/d' /etc/fstab
    
    # Deletar o arquivo
    sudo rm /swapfile
    
    # Verificar espaço recuperado
    df -h /

    $ runstack deploy --plan starter

    Não quer configurar manualmente?

    Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.

    Perguntas frequentes