Quanta memória RAM para um VPS: a regra, uso por uso

A memória é o recurso que mais define o tamanho de um servidor: é ela que falta primeiro, e quando falta, o servidor não fica apenas lento, ele interrompe serviços. Este guia traz a regra de cálculo, o que cada componente de uma aplicação consome, perfis típicos e a forma de medir em um servidor que já está rodando.

Publicado em 15 de outubro de 2026 Por Leitura: 9 minutos

Todos os guias

O essencial

  1. Some o que fica em memória o tempo todo: o sistema, o servidor web, cada processo da aplicação, o banco de dados, o cache.
  2. Dimensione pelo pico, não pela média: um build, um backup ou uma tarefa agendada podem dobrar o consumo durante alguns minutos.
  3. Acrescente 25% de margem. A memória que fica livre serve de cache de disco e acelera o banco de dados.
  4. Em um servidor que já está rodando, leia a coluna available do free -h, não a coluna free.
  5. Quando a memória acaba, o Linux encerra um processo, muitas vezes o maior: o banco de dados. Um serviço que reinicia sozinho é o primeiro sinal a acompanhar.
  6. Escolha um tamanho que permita crescer sem reinstalar: as necessidades de uma aplicação em produção aumentam com os dados dela.

A regra: somar o que fica em memória

Um servidor não consome memória “em geral”: cada programa em execução reserva uma parte dela enquanto roda. O cálculo parte, portanto, da lista dos processos presentes o tempo todo e depois acrescenta o pico e uma margem:

Memória a prever = (sistema + serviços permanentes + pico das tarefas pontuais) × 1,25

O que cada componente consome

As ordens de grandeza abaixo valem para uma aplicação de porte comum, medida em produção. Elas dão um ponto de partida; a medição em sua própria aplicação, descrita mais adiante, sempre tem a última palavra.

ComponenteMemória típicaO que a faz variar
Nginx, Caddy (servidor web, proxy)10 a 50 MBQuase fixa: o número de conexões pesa pouco.
PHP-FPM (WordPress, Laravel, Symfony)40 a 80 MB por processoO número de processos, limitado por pm.max_children: 10 processos, 400 a 800 MB.
Node.js (API, Next.js, NestJS)60 a 300 MB por processoO número de processos (modo cluster, PM2) e o tamanho do heap, limitado por --max-old-space-size.
Python (Django, FastAPI, Flask)80 a 200 MB por processoO número de workers do Gunicorn ou do Uvicorn, e as bibliotecas carregadas: pandas ou um modelo de aprendizado de máquina acrescentam centenas de MB.
Java (Spring Boot)300 MB a 1 GB por aplicaçãoO tamanho máximo do heap: por padrão, a JVM reserva para si um quarto da memória que enxerga.
Go, Rust10 a 100 MBOs dados que a própria aplicação mantém em memória.
PostgreSQL25% da memória para shared_buffers, mais alguns MB por conexãoO volume de dados consultados com frequência, o número de conexões, work_mem.
MySQL, MariaDBinnodb_buffer_pool_size, 128 MB por padrãoEm um servidor dedicado ao banco, esse buffer costuma ocupar até 80% da memória.
RedisO tamanho dos dados, mais as estruturas deleDurante uma gravação em disco, as páginas modificadas são duplicadas: até o dobro no pior caso.
Elasticsearch, OpenSearchPelo menos 2 GB de heapO heap não passa da metade da memória: o resto serve de cache de arquivos.

Um pico aparece com frequência nas aplicações JavaScript: o build. npm run build em um projeto Next.js, Nuxt ou Angular costuma pedir 1 a 2 GB sozinho, durante alguns minutos, além do que já está rodando. Fazer o build no servidor é dimensionar para esse pico; fazer o build em seu computador ou em sua integração contínua e enviar só o resultado é evitá-lo.

O mesmo raciocínio vale para os contêineres Docker: cada contêiner é um conjunto de processos como os outros, e o daemon do Docker acrescenta o próprio consumo. docker stats mostra quanto cada um ocupa.

Perfis típicos

Estes perfis somam os componentes anteriores, pico e margem incluídos. Eles supõem uma aplicação de porte comum e o tráfego de um lançamento; um banco de dados volumoso ou um tráfego alto e constante empurram o número para cima.

O que roda no servidorMemória a prever
Site estático, proxy, pequeno bot ou script agendado1 a 2 GB
Um site WordPress com MariaDB e cache de páginas2 GB
Uma loja WooCommerce, ou vários sites WordPress4 GB
Uma API Node.js ou Python com PostgreSQL, primeiros usuários4 GB
Uma aplicação Next.js com build no servidor, a API dela e um banco PostgreSQL6 a 8 GB
Várias aplicações em contêineres, homologação e produção8 GB
Um banco de dados de várias dezenas de GB, consultado intensamente16 GB ou mais
Um modelo de linguagem de 7 a 8 bilhões de parâmetros executado no servidor16 GB

Uma aplicação que chama um modelo de IA por API (OpenAI, Anthropic, Mistral) se dimensiona como qualquer aplicação web: o modelo roda no fornecedor, e seu servidor aguarda a resposta. É a execução do modelo no próprio servidor que muda a escala.

Medir em um servidor que está rodando

Em um servidor em produção, a medição substitui a estimativa. Três comandos mostram onde você está:

Terminal
free -h
ps aux --sort=-rss | head -n 15
vmstat 5 5

Meça no horário de maior carga do dia, e durante as tarefas pontuais: build, backup, importação. O que conta é o pico.

Quando a memória acaba

Um servidor sem memória não fica lento aos poucos. Quando não há mais nada a liberar, o kernel Linux aciona o OOM killer (out of memory): ele escolhe um processo, em geral o que ocupa mais memória, e o encerra na hora. Em um servidor de aplicação, muitas vezes é o banco de dados.

Os sintomas: erros 502 ou 503 de vez em quando, um serviço que reinicia sem motivo aparente, um build que para com Killed. Os logs confirmam:

Terminal
journalctl -k | grep -i "out of memory"
systemctl status nome-do-servico

Na saída do systemctl status, a mensagem Failed with result 'oom-kill' indica um serviço encerrado por falta de memória.

O swap, quando o servidor tem, adia esse momento transferindo para o disco a memória menos usada. Ele serve de rede de segurança, não de capacidade: um servidor que depende do swap o tempo todo responde várias vezes mais devagar, mesmo em um SSD NVMe.

As soluções, da mais simples à mais duradoura: reduzir o número de processos da aplicação (pm.max_children, workers do Gunicorn), fazer o build fora do servidor, limitar a memória do banco de dados e, depois, passar para um tamanho superior.

Escolher o tamanho e planejar o futuro

  1. Liste o que vai rodar: servidor web, aplicação e número de processos, banco de dados, cache, tarefas agendadas.
  2. Some com a tabela de componentes, acrescente o pico mais pesado (muitas vezes o build) e, depois, 25% de margem.
  3. Fique com o tamanho que cobre esse total. Entre dois tamanhos vizinhos, o menor serve, desde que a passagem para o tamanho superior aconteça sem reinstalação.
  4. Meça depois de entrar no ar, no pico do dia, e de novo a cada etapa de crescimento da aplicação.

A memória não é o único recurso: o processador conta para o que calcula (build, processamento de imagens, execução de um modelo de IA), o disco para o banco de dados e os arquivos. Em uma aplicação web, porém, é quase sempre a memória que define o tamanho.

O tamanho certo, e a liberdade de mudar

O VPS Pro tem seis tamanhos, com processadores Intel Xeon, memória ECC e SSD NVMe espelhados, e passa para o tamanho superior a qualquer momento, sem reinstalação. A Assistência integral está incluída: conte o que seu servidor vai rodar, recomendamos o tamanho e, a cada dúvida, diagnosticamos e indicamos o que fazer, do sistema até o código de sua aplicação.

Conhecer o VPS Pro

Perguntas frequentes

Quanta RAM para um VPS pequeno?

Um site estático, um proxy ou um pequeno script rodam em 1 a 2 GB. Quando um banco de dados e uma aplicação (PHP, Node.js, Python) dividem o servidor, conte 2 GB para um site WordPress e 4 GB para uma aplicação sob medida com PostgreSQL.

Quanta RAM para WordPress em um VPS?

2 GB para um site com MariaDB e cache de páginas, 4 GB para uma loja WooCommerce ou vários sites. O número de processos PHP-FPM é o primeiro ajuste: cada um ocupa 40 a 80 MB.

O swap pode substituir a RAM?

Não. O swap evita um encerramento brusco quando a memória está cheia, mas um servidor que depende dele o tempo todo responde várias vezes mais devagar, mesmo em um SSD NVMe. É uma rede de segurança; o tamanho se escolhe pela memória.

Por que o free mostra quase nenhuma memória livre?

Porque o Linux usa a memória não utilizada como cache de arquivos. Esse cache é liberado assim que um programa precisa de memória. A coluna a ler é available, que mostra a memória realmente disponível.

Quanta RAM para fazer o build de uma aplicação Next.js?

Conte 1 a 2 GB só para o build, além do que já roda no servidor. Fazer o build em seu computador ou em sua integração contínua e enviar só o resultado evita esse pico.

Entre em contato