Wafly › Blog › Consumo de servidor
Quanto de servidor uma API de WhatsApp realmente consome
Quase todo comparativo de API de WhatsApp discute preço de licença e número de endpoints. Quando alguém decide self-hostear, a surpresa raramente vem da licença: vem da conta de servidor no fim do mês. Esta página faz essa conta com os números que dá para verificar, e diz explicitamente onde a gente não mediu.
De onde vem o consumo: navegador ou protocolo
Existem duas famílias de implementação de WhatsApp não oficial, e elas têm perfis de consumo completamente diferentes.
A primeira automatiza o WhatsApp Web dentro de um navegador headless. É o caso do WPPConnect, que roda Node.js com Chromium por sessão. Cada número conectado carrega um Chromium inteiro, com renderização, JavaScript da página e todo o overhead de um navegador de verdade rodando sem tela.
A segunda implementa o protocolo do WhatsApp diretamente, sem navegador nenhum. É o caso do Baileys (Node.js, protocolo nativo, sem navegador) e do whatsmeow, que é o que roda na nossa infraestrutura. O processo mantém a conexão, as chaves de criptografia e o estado da sessão, e nada mais.
A diferença arquitetural entre as duas famílias explica quase toda a variação de custo de máquina. Não é otimização de código, é o que cada uma decidiu carregar.
Quanto de RAM por número, na prática
| Implementação | Como conecta | RAM por número conectado | Verificado |
|---|---|---|---|
| WPPConnect | Node.js com Chromium por sessão | cerca de 387 MB de RAM por sessão | 27/07/2026 |
| Baileys | Node.js, protocolo nativo, sem navegador | não medido por nós | 27/07/2026 |
| whatsmeow | Go, protocolo nativo | não medido em bancada isolada | 30/07/2026 |
Não temos medição própria de bancada para Baileys nem para o whatsmeow com metodologia controlada, então não vamos publicar um número para eles. O que dá para afirmar com segurança é qualitativo e vale muito: sem navegador embarcado, o piso de memória por sessão cai em uma ordem de grandeza, porque some o processo mais pesado da conta. Se você encontrar um comparativo com número exato para as três, pergunte qual foi a metodologia.
O caso extremo do lado do navegador está documentado publicamente: relato de 30 GB de 32 GB consumidos em servidor de produção. Não é um bug exótico, é o comportamento esperado quando você multiplica um Chromium por número conectado numa máquina que não foi dimensionada para isso.
A conta do servidor para 1, 10 e 50 números
Trabalhando só com o número que está verificado, cerca de 387 MB de RAM por sessão de WPPConnect, a projeção de memória fica assim:
| Números conectados | Só as sessões (navegador) | Máquina realista com folga |
|---|---|---|
| 1 | cerca de 0,4 GB | 1 GB |
| 10 | cerca de 3,9 GB | 8 GB |
| 50 | cerca de 19 GB | 32 GB ou mais |
A coluna da direita não é exagero. Sessão de WhatsApp tem pico: sincronização de histórico ao reconectar, recebimento de mídia e reinício de sessão consomem bem acima da média em rajada. Dimensionar pela média é o erro que produz o caso de 30 GB de 32 GB.
Deliberadamente não colocamos preço de VPS nesta tabela. O preço do GB de RAM varia por provedor, região e compromisso de prazo, e um número desses envelhece rápido. Pegue o valor do seu provedor e multiplique. O que essa tabela dá é a variável que quase ninguém considera antes de contratar: você dimensiona por conexões simultâneas, não por volume de mensagens.
O segundo gargalo: banco de dados e conexões
Memória é o custo visível. O que costuma quebrar depois é o banco.
Na nossa operação, o serviço de conexão roda distribuído em 6 deployments do serviço de conexão com um pool de 2 conexões de Postgres por instância. Parece pouco por instância, e é justamente esse o ponto: multiplicado por dezenas de números, o total de conexões abertas encosta no teto do banco muito antes de a CPU ou a memória darem sinal. Quem self-hosteia costuma descobrir esse limite em produção, no dia em que sobe do décimo para o vigésimo número.
O histórico de mensagens é o outro eixo. Ele cresce com o tráfego e não com o número de conexões, então é um custo que aparece meses depois de a arquitetura já estar decidida. Vale planejar retenção antes, não quando o disco encher.
Onde o self-host realmente ganha
Não somos neutros nessa comparação, então vamos ser explícitos sobre onde o self-host é a escolha certa.
- Uma ou duas instâncias de uso interno. O custo de máquina é irrelevante nessa escala e você não paga mensalidade nenhuma. A Evolution API é Apache 2.0 e gratuita para self-host.
- Controle total sobre o dado. Se a política da empresa não permite mensagem trafegando por terceiro, a discussão de custo nem começa.
- Necessidade de modificar a biblioteca. Quem precisa de comportamento fora do padrão vai precisar do código na mão.
E onde ele costuma sair caro: quando o número fora do ar custa dinheiro. O gasto real do self-host não é a máquina, é o tempo de quem religa a sessão às 22h de domingo, acompanha mudança de protocolo do WhatsApp e mantém a biblioteca atualizada. Vale lembrar que o Baileys está com 7.0.0 em release candidate desde outubro de 2025 e carrega CVE-2026-48063, severidade crítica, o que dá a dimensão do trabalho de manutenção que vem junto.
Como medir antes de contratar máquina
Antes de fechar servidor, rode este teste, que leva menos de uma hora:
- Suba a biblioteca escolhida com um número real conectado.
- Deixe a sessão no ar por 24 horas, com tráfego parecido com o seu.
- Meça a memória residente do processo no pico, não na média. Em Linux, acompanhe o
RSSdo processo ao longo do dia. - Force uma reconexão e meça de novo: a sincronização é o pico verdadeiro.
- Multiplique o pico pelo número de conexões que você pretende manter, e some 50% de folga para o sistema operacional e o banco.
Se o resultado couber no seu orçamento de infraestrutura, self-host faz sentido. Se não couber, a mensalidade de um gerenciado provavelmente é mais barata que a máquina que você teria que contratar, e é exatamente essa a conta que a maioria não faz antes de decidir.
O que isso tem a ver com estabilidade do número
Servidor mal dimensionado não bane número, mas produz o sintoma que costuma ser confundido com banimento: sessão caindo sozinha. Memória no limite derruba processo, processo derrubado reconecta, e um número que reconecta o tempo todo é um número instável para quem depende dele.
Na nossa frota, a causa dos bloqueios que registramos é outra e está bem separada disso: 17 eventos de erro 463 registrados, 100% deles em mensagem para contato sem histórico de conversa, nenhum em resposta a quem escreveu primeiro. Ou seja, comportamento de abordagem, não consumo de máquina. Vale mencionar aqui porque os dois problemas se apresentam do mesmo jeito para quem está de fora, com o número parando de funcionar, e o diagnóstico é completamente diferente. Se quiser entender o lado do bloqueio, o assunto está detalhado em número banido no WhatsApp.
Não quer administrar máquina para isso
Instância dedicada rodando whatsmeow, com health score de 0 a 100 e eventos de desconexão com motivo no painel. R$ 59,90/mês, 3 dias grátis, sem cartão.
Criar instância grátisPerguntas frequentes
Quanta memória RAM cada número de WhatsApp conectado consome?
Depende inteiramente da biblioteca. Implementações que abrem um navegador headless por sessão, como o WPPConnect, consomem cerca de 387 MB de RAM por número conectado, porque cada sessão carrega uma instância de Chromium completa. Implementações que falam o protocolo do WhatsApp diretamente, como Baileys e whatsmeow, mantêm apenas o estado da conexão e o consumo cai em uma ordem de grandeza. A diferença aparece na fatura do servidor a partir do terceiro ou quarto número, não no primeiro.
Qual servidor eu preciso para rodar 10 números de WhatsApp?
Com biblioteca baseada em navegador, 10 sessões pedem por volta de 4 GB só para os processos de Chromium, o que na prática significa uma máquina de 8 GB para ter folga de pico e sistema operacional. Com biblioteca de protocolo nativo, os mesmos 10 números cabem confortavelmente em 1 ou 2 GB. Some a isso o banco de dados, que costuma ser o segundo gargalo e cresce com o histórico de mensagens, não com o número de conexões.
Self-host de API de WhatsApp sai mais barato que serviço gerenciado?
Em custo de servidor puro, quase sempre sim, principalmente com poucas conexões. A conta muda quando você inclui o tempo de operação: reconexão após queda, atualização da biblioteca quando o WhatsApp muda o protocolo, monitoramento de sessão caída e o plantão para religar número fora do ar em fim de semana. Para uma ou duas instâncias de uso interno, self-host costuma valer. Para operação em que número fora do ar causa prejuízo, o gerenciado geralmente sai na frente.
O consumo de servidor influencia no risco de banimento do número?
Não diretamente. O banimento responde a padrão de uso, principalmente abordar contatos que nunca conversaram com você, e não a quanta memória o processo consome. O elo indireto existe: servidor sobrecarregado derruba sessão, sessão derrubada gera reconexão frequente, e reconexão frequente é sinal ruim para a plataforma. Dimensionar mal a máquina não bane o número, mas atrapalha a estabilidade que sustenta a operação.
Continue lendo
WhatsApp e Meta são marcas de seus respectivos donos, sem relação com a Wafly. Os preços de terceiros citados foram verificados na data indicada em cada tabela e mudam sem aviso: confira na fonte antes de decidir. Encontrou algo desatualizado ou discorda de alguma conclusão? Fale com a gente.