Nginx e Apache alta carga. Lidar com alta carga em servidores web é como tentar gerenciar uma cafeteria na hora do rush: se o fluxo de pedidos não for bem organizado, o sistema trava. Nginx e Apache reagem de formas diferentes ao estresse devido às suas arquiteturas distintas.
Aqui estão os erros mais comuns e como identificá-los:
1. Erros Comuns no Nginx
O Nginx é orientado a eventos, o que o torna excelente para conexões simultâneas, mas ele tem limites configurados por padrão que podem ser “atropelados”.
worker_connectionsinsuficiente:Se você vir o erroworker_connections are not enoughnos logs, o Nginx atingiu o limite de conexões que cada processo worker pode manipular.- Solução: Aumentar o valor no
nginx.conf. Geralmente, o cálculo é $Worker Processes \times Worker Connections = Limite Total$.
- Solução: Aumentar o valor no
502 Bad Gateway/504 Gateway Timeout:Geralmente não é culpa do Nginx, mas sim do “backend” (PHP-FPM, Python, Node.js) que não respondeu a tempo ou caiu sob pressão.- Esgotamento de File Descriptors:No Linux, tudo é um arquivo. Se o limite do sistema operacional for baixo, o Nginx não consegue abrir novos sockets.
- Sinal:
open() "/path/to/file" failed (24: Too many open files).
- Sinal:
2. Erros Comuns no Apache
O Apache (especialmente no modo prefork) cria um processo/thread para cada conexão. Sob carga, isso consome memória RAM rapidamente.
MaxRequestWorkersatingido:Este é o “teto” do Apache. Quando atingido, novas conexões são colocadas em uma fila de espera (Backlog). Se a fila encher, o usuário recebe um erro de conexão recusada.- Sinal: Mensagem
AH00161: server reached MaxRequestWorkers settingnos logs.
- Sinal: Mensagem
- O “Death Spiral” de RAM:Se o
MaxRequestWorkersfor muito alto e cada processo PHP/Python consumir muita memória, o servidor começará a usar o Swap (disco). Isso torna o servidor extremamente lento até que ele pare de responder. - Timeout de Keep-Alive:Manter conexões abertas por muito tempo (
KeepAliveTimeout) em um Apache sob carga pode “prender” slots preciosos de conexão que poderiam ser usados por novos usuários.
Comparativo de Comportamento
| Sintoma | Nginx | Apache |
| Uso de CPU | Geralmente eficiente (event-driven) | Alto devido ao gerenciamento de threads |
| Uso de RAM | Baixo e estável | Escala proporcionalmente ao número de usuários |
| Falha Típica | Erros 502/504 (esperando o backend) | Servidor “congela” ou fica lento (Swap/RAM) |
3. Erros de Configuração de Rede (Kernel)
Às vezes, o erro não está no software do servidor, mas no sistema operacional:
TCP Backlogcheio: O kernel do Linux tem uma fila para conexões que ainda não foram aceitas pela aplicação. Se o tráfego for muito súbito, essa fila transborda.Ephemeral Port Exhaustion: Se o seu servidor faz muitas conexões de saída (ex: Nginx como Proxy reverso para um banco de dados), ele pode ficar sem portas disponíveis para abrir novas conexões.
Dicas de Diagnóstico Rápido:
- Logs: Sempre verifique
/var/log/nginx/error.logou/var/log/apache2/error.log. - Monitoramento: Use o comando
htoppara ver CPU/RAM enetstat -n | wc -lpara contar conexões ativas. - Testes de Carga: Ferramentas como
ab(Apache Benchmark) ouwrkajudam a simular o erro antes que ele aconteça na produção.
FAQ
O erro 502 geralmente ocorre quando o Nginx atua como proxy reverso e o serviço de backend (como PHP-FPM ou Node.js) está sobrecarregado ou caiu, não conseguindo processar a requisição a tempo.
É um limite configurado no Apache que define o número máximo de solicitações simultâneas que podem ser atendidas. Quando esse limite é atingido, novas conexões entram em uma fila de espera ou são recusadas.
O Nginx utiliza uma arquitetura orientada a eventos, consumindo pouca RAM mesmo com milhares de conexões. O Apache, por padrão, cria um processo ou thread por conexão, o que pode esgotar a RAM rapidamente em picos de tráfego.
Para resolver, é necessário aumentar o valor de worker_connections no arquivo nginx.conf e verificar se o limite de arquivos abertos (ulimit) do sistema operacional também permite esse aumento.
Veja Mais: Erros que todo sysadmin iniciante comete
Veja Mais: Erros comuns ao administrar servidores de hospedagem

