Tempo de leitura: 3 minutos
Se o seu site cai em horário de pico com erro 502 ou fica lento sem motivo, o culpado muitas vezes é o PHP-FPM. Ele mantém um grupo de processos PHP prontos para atender os visitantes, e o número desse grupo precisa bater com a memória da sua VPS. Nem pouco, nem demais.
Mais RAM e CPU de verdade dão mais folga para configurar o PHP sem apertar. Se você ainda não tem onde rodar isso, a Cloud VPS Brasil já entrega o servidor pronto.
Como o PHP-FPM funciona
Cada visita que precisa de PHP ocupa um processo (chamado de worker) durante o tempo da requisição. Se todos estiverem ocupados, a visita entra numa fila. Se a fila estourar, o Nginx devolve o erro 502 ou 504. O parâmetro que define o teto de processos é o pm.max_children.
Onde fica a configuração
O arquivo do pool depende da versão do PHP. No Ubuntu e no Debian, por exemplo:
/etc/php/8.3/fpm/pool.d/www.conf
Troque 8.3 pela versão que você usa. Para descobrir, rode php -v.
Passo 1: medir quanto cada processo consome
Com o site em uso, veja a memória média de um processo PHP-FPM:
ps --no-headers -o rss -C php-fpm8.3 | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
Em WordPress comum, é normal ficar entre 40 MB e 100 MB por processo, e plugins pesados aumentam esse valor.
Passo 2: calcular o pm.max_children
A conta é simples:
pm.max_children = RAM disponível para o PHP / memória média por processo
Exemplo: uma VPS de 4 GB, em que você reserva 1,5 GB para sistema, banco e cache, deixa 2,5 GB para o PHP. Com 70 MB por processo, 2500 / 70 dá cerca de 35. Arredonde para baixo e deixe uma margem de segurança.
Passo 3: ajustar o arquivo
pm = dynamic
pm.max_children = 30
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 12
pm.max_requests = 500
O que cada um faz:
- pm = dynamic: o número de processos sobe e desce conforme a demanda.
- pm.start_servers: quantos iniciam junto com o serviço.
- pm.min_spare_servers e pm.max_spare_servers: quantos ficam ociosos esperando visita.
- pm.max_requests: depois de atender essa quantidade, o processo é reciclado, o que evita vazamento de memória.
Se o site tem pouco tráfego e a VPS é pequena, pm = ondemand economiza memória, criando processos só quando precisa.
Passo 4: testar e aplicar
sudo php-fpm8.3 -t
sudo systemctl reload php8.3-fpm
O -t valida a sintaxe antes de aplicar. Se aparecer test is successful, o reload é seguro.
Como saber se o valor está certo
Olhe o log de erros do PHP-FPM (em geral /var/log/php8.3-fpm.log). Se aparecer a mensagem “server reached pm.max_children setting”, o limite está baixo para o seu tráfego, e você precisa de mais processos ou de mais RAM. Se a memória da VPS acaba antes disso, o limite está alto demais.
Dicas para reduzir o consumo
- Ative cache de página e de objetos. Veja Redis no WordPress.
- Remova plugins que você não usa.
- Se o erro for 502, veja também Erro 502 Bad Gateway na VPS.
- Crie swap como rede de segurança, não como solução.
Mais folga para o PHP trabalhar
Quando a conta de memória aperta, o caminho é um plano maior. Na Cloud VPS Brasil você conta com Intel Xeon Gold, SSD NVMe, baixa latência, tráfego ilimitado, preço fixo em reais e suporte humano via WhatsApp e ticket. Fale com a equipe pelo WhatsApp e escolha o plano ideal para o seu projeto.