Parte 1 — Introdução
Saber como reduzir o consumo de RAM em servidores web é uma das habilidades mais importantes para administradores de sistemas e desenvolvedores que gerenciam infraestrutura própria ou VPS. Quando a memória RAM se esgota, o servidor passa a usar swap em disco, causando lentidão severa, timeouts e queda de disponibilidade.
O alto consumo de RAM raramente tem uma causa única. Geralmente é resultado de uma combinação de fatores: servidor web mal configurado, excesso de processos PHP rodando simultaneamente, serviços desnecessários em segundo plano e falta de cache eficiente.
Neste guia, você vai aprender a identificar o que está consumindo RAM no seu servidor, otimizar as configurações do Nginx ou Apache, ajustar o PHP-FPM, ativar mecanismos de cache e desativar serviços que não são necessários. Ao aplicar todas essas técnicas, é possível reduzir o consumo de RAM em servidores web em 30% a 60%, dependendo do ambiente.
Alto consumo de RAM é um dos problemas mais comuns em ambientes Linux. Para entender a otimização completa do sistema, veja o guia de otimizar VPS, servidor dedicado e cloud.
Parte 2 — Como monitorar o uso de RAM no servidor
Como monitorar o consumo de RAM antes de otimizar
Antes de saber como reduzir o consumo de RAM em servidores web, é necessário entender o que está consumindo memória. Sem dados concretos, qualquer ajuste é feito no escuro.
Principais comandos de monitoramento:
free -h — exibe a memória total, usada, livre e de swap de forma legível:
free -hhtop — interface interativa que mostra processos ordenados por uso de memória em tempo real. Instale com apt install htop ou dnf install htop.
ps aux --sort=-%mem | head -20lista os 20 processos que mais consomem RAM no momento.
vmstat -sexibe estatísticas detalhadas de memória do kernel.
cat /proc/meminfomostra informações brutas sobre uso de memória, incluindo buffers e cache do kernel.
Outro ponto importante: no Linux, a memória exibida como “usada” inclui buffers e cache do sistema. O que realmente importa é a coluna available no free -h, pois ela indica quanta memória está de fato disponível para novos processos.
Após identificar quais processos consomem mais RAM, é possível atacar os maiores vilões com configurações específicas.
O uso excessivo de memória pode afetar CPU, swap e disco simultaneamente. Confira como melhorar a performance do servidor.
Parte 3 — Otimizando o servidor web: Nginx vs Apache
Nginx vs Apache: qual consome menos RAM e como configurar
Uma das decisões mais impactantes para reduzir o consumo de RAM em servidores web é a escolha e configuração do servidor HTTP.
Apache usa o modelo prefork ou worker: cada requisição recebe um processo ou thread dedicado. Isso significa que, com 100 conexões simultâneas, você pode ter 100 processos Apache em memória. Para reduzir o consumo:
nano /etc/apache2/mods-enabled/mpm_prefork.confStartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers 50
MaxConnectionsPerChild 1000Reduza MaxRequestWorkers ao mínimo necessário para o tráfego real do seu site.
Nginx usa um modelo orientado a eventos e assíncrono, muito mais eficiente em memória. Um único worker pode lidar com milhares de conexões simultâneas. Configure assim:
nano /etc/nginx/nginx.conf
worker_processes auto; # ou igual ao número de CPUs
worker_connections 1024;
keepalive_timeout 15;
client_body_buffer_size 10K;
client_max_body_size 8M;Reduzir keepalive_timeout e worker_connections para valores adequados ao seu tráfego evita que o Nginx reserve memória para conexões que nunca chegam.
Se você ainda usa Apache, considere migrar para Nginx. Em servidores com 1 GB de RAM, essa mudança sozinha pode liberar 150 a 300 MB de memória, dependendo do volume de tráfego.
Aplicações mal configuradas podem consumir recursos excessivos. Veja a estratégia de otimização de infraestrutura Linux.
Parte 4 — Ajustando PHP-FPM e extensões
Como configurar o PHP-FPM para consumir menos RAM
O PHP-FPM é responsável por grande parte do consumo de RAM em servidores que hospedam aplicações PHP. A configuração padrão raramente é ideal para servidores com pouca memória.
O parâmetro mais crítico é pm.max_children, que define quantos processos PHP podem rodar ao mesmo tempo. Calcule assim:
RAM disponível para PHP ÷ RAM média por processo PHP = pm.max_childrenSe cada processo PHP consome ~30 MB e você tem 300 MB disponíveis para PHP:
300 ÷ 30 = 10 processosConfiguração recomendada para servidores pequenos:
/etc/php/8.x/fpm/pool.d/www.conf #esse caminho pode mudar dependendo da sua distribuição linuxpm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500O pm.max_requests = 500 força a reinicialização do processo após 500 requisições, prevenindo vazamentos de memória (memory leaks) em aplicações mal escritas.
Desative extensões PHP não utilizadas no arquivo php.ini:
;extension=soap
;extension=imap
;extension=xdebug ; NUNCA ative em produçãoCada extensão PHP carregada consome memória em todos os processos. Desativar 5 a 8 extensões desnecessárias pode reduzir em 5–15 MB o consumo por processo, o que, multiplicado por 10 processos, representa até 150 MB liberados.
Parte 5 — Cache e banco de dados eficiente
Usando cache para reduzir o consumo de RAM indiretamente
O uso de cache é uma estratégia poderosa para reduzir o consumo de RAM em servidores web, pois diminui o número de processos PHP que precisam ser iniciados para responder requisições.
OPcache — integrado ao PHP, armazena o bytecode compilado em memória compartilhada, eliminando a recompilação a cada requisição:
o default é alterar esses valores no php.ini da versão do php utilizado
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=40000
opcache.revalidate_freq=60Redis como cache de sessões e objetos evita que a aplicação precise consultar o banco de dados repetidamente, reduzindo o tempo de execução dos processos PHP e permitindo que eles liberem memória mais rapidamente.
No MySQL/MariaDB, reduza o buffer pool se ele estiver superdimensionado:
geralmente /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 128M ; ajuste ao real usoVeja mais em : MariaDB consumindo muita CPU? Como otimizar o my.cnfO valor padrão do innodb_buffer_pool_size é 128 MB, mas em servidores com MySQL configurado automaticamente pode chegar a 50–75% da RAM total, o que em um servidor de 1 GB representa 512–768 MB só para o banco de dados.
Monitorar o uso real com SHOW ENGINE INNODB STATUS e ajustar esse valor para o tamanho real do banco de dados é uma das formas mais eficazes de liberar RAM rapidamente.
Reduzir consumo de RAM exige ajustes no ambiente completo. Veja como otimizar VPS Linux.
Parte 6 — Desativando serviços desnecessários no Linux
Desative serviços que consomem RAM sem necessidade
Sistemas Linux instalados via imagens de VPS frequentemente vêm com serviços ativados que não são necessários em servidores web de produção. Cada serviço desnecessário rodando em segundo plano consome RAM constantemente.
Liste os serviços ativos:
systemctl list-units --type=service --state=runningServiços que costumam ser desnecessários em servidores web:
systemctl disable --now avahi-daemon
systemctl disable --now bluetooth
systemctl disable --now cups
systemctl disable --now snapdConfigure o swap de forma inteligente. O swap não substitui RAM, mas evita o crash do servidor quando a memória esgota. Ajuste o swappiness para reduzir o uso desnecessário de swap:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -pO valor padrão de swappiness=60 faz o kernel mover processos para o swap cedo demais. Com swappiness=10, o Linux só recorre ao swap quando realmente necessário.
Além disso, use ulimit para limitar a quantidade de processos que usuários do sistema podem criar, impedindo que um processo mal comportado consuma toda a RAM disponível.
Interpretar corretamente métricas de memória é essencial para evitar gargalos. Veja o guia de otimização de servidores
O consumo de RAM deve ser analisado junto com outras métricas do sistema. Veja também:
Conclusão
Reduzir o consumo de RAM em servidores web é um processo contínuo que combina monitoramento, configuração e escolhas arquiteturais inteligentes. As principais ações que você deve tomar são: usar Nginx em vez de Apache quando possível, ajustar o pm.max_children do PHP-FPM com base na RAM real disponível, ativar o OPcache, ajustar o innodb_buffer_pool_size do MySQL ao tamanho real do banco, desativar serviços e extensões desnecessários e configurar o swappiness corretamente.
Aplicando todas essas técnicas em conjunto, é possível manter um servidor web estável, responsivo e eficiente mesmo com recursos limitados — reduzindo custos de infraestrutura e melhorando a experiência do usuário final.
Para manter estabilidade e desempenho, é importante otimizar completamente o ambiente. Consulte o guia de otimizar VPS, servidor dedicado e cloud.
FAQ
Use free -h para uma visão geral e ps aux --sort=-%mem para ver quais processos consomem mais memória.
O Nginx consome significativamente menos RAM, pois é orientado a eventos e assíncrono. Para servidores com até 2 GB de RAM, o Nginx é sempre a melhor escolha.
Sim. Os parâmetros pm.max_children, pm.start_servers e pm.max_requests são os mais impactantes. Calcule o pm.max_children com base na RAM disponível dividida pelo consumo médio de cada processo PHP.
Sim. Cada extensão carregada consome memória em todos os processos ativos. Desativar extensões como XDebug, IMAP e SOAP em produção pode liberar dezenas de megabytes.
O cache reduz o número de requisições que precisam ser processadas pelo PHP, diminuindo a quantidade de processos em execução simultânea e, consequentemente, o consumo total de memória.
Dependendo do ponto de partida, é realista economizar entre 30% e 60% do consumo de RAM ao aplicar todas as técnicas: trocar Apache por Nginx, ajustar PHP-FPM, ativar OPcache, configurar MySQL corretamente e desativar serviços desnecessários.
Veja Também:
Como Otimizar VPS, Servidor Dedicado ou Cloud: Guia Completo
Servidor Lento: Identifique Gargalo em VPS, Dedicado ou Cloud
CPU 100%: Diferenças Entre VM e Bare Metal no Servidor
iowait Alto NVMe Cloud: Como Diagnosticar Gargalo de Disco
Load Average em Ambiente Virtualizado: Como Interpretar VPS e Cloud
Steal Time Alto na VPS: O Que É e Como Resolver o Gargalo
Como Medir Performance de Servidor Linux na Prática (Além da CPU)
VPS Lenta? Guia de Diagnóstico, Otimização e Escalonamento
Veja Mais:
Cloud vale a pena para sites médios? O Guia Definitivo
Overprovisioning em Cloud: O Guia Definitivo para SysAdmins (2026)
Quando migrar para servidor dedicado?
VPS vs Servidor Dedicado em 2026 (Guia Técnico)
Definitivo: Como Dominar o Comando Sar Linux para Monitoramento
Diagnóstico de VPS Lento: Checklist Completo e Definitivo
Servidor Dedicado Lento? 15 Causas e Soluções Definitivas (2026)
Saiba Mais:
Como Otimizar o Uso de CPU em uma VPS Linux: Guia Definitivo
Servidor dedicado lento? 10 causas comuns e como resolver
Como Identificar o Gargalo do Servidor: Guia Completo (Diagnóstico 5 Min)
Como Interpretar Métricas de Performance Corretamente no Linux
Servidores Lentos: 5 Erros de Configuração e Como Corrigir
Como Evitar CPU Steal em VPS: Guia Prático de Performance
Como Diagnosticar VPS Lento: Guia Passo a Passo via SSH
Otimizar memoria ram no linux server e Evitar o OOM Killer

