Será aumentado para 1600 conexões como exemplo.
Antes de tudo: Como saber o que está acontecendo agora no Servidor?
Para verificar as configurações atuais das conexões execute os coamndos:
apachectl -M | grep mpm
Terá uma resposta como essa:
mpm_event_module (shared)
No meu caso está sendo usado o módulo EVENT
Depois execute o comando para ver a quantidade máxima de conexões:
grep -R "MaxRequestWorkers" /etc/apache2/
Será exibido algo como:
/etc/apache2/mods-available/mpm_worker.conf:# MaxRequestWorkers: maximum number of threads
/etc/apache2/mods-available/mpm_worker.conf: MaxRequestWorkers 150
/etc/apache2/mods-available/mpm_event.conf: MaxRequestWorkers 400
/etc/apache2/mods-available/mpm_prefork.conf:# MaxRequestWorkers: maximum number of server processes allowed to start
/etc/apache2/mods-available/mpm_prefork.conf: MaxRequestWorkers 150
/etc/apache2/mods-enabled/mpm_event.conf: MaxRequestWorkers 400
Você está usando MPM event e hoje o Apache está limitado a:
MaxRequestWorkers 400
Quando você passa disso, aparecem sintomas tipo:
- lentidão
- conexões em espera
AH00161: server reached MaxRequestWorkers- erros 503
🎯 Objetivo
Atender ~1500 conexões simultâneas usando MPM event.
1️⃣ Ajustar o Apache (MPM event)
Edite o arquivo ativo:
sudo nano /etc/apache2/mods-enabled/mpm_event.conf
Use algo assim:
<IfModule mpm_event_module>
ServerLimit 50
StartServers 5
ThreadsPerChild 32
MaxRequestWorkers 1600
MaxConnectionsPerChild 10000
</IfModule>
Por quê esses números?
50 x 32 = 1600- MaxRequestWorkers TEM que ser múltiplo de ThreadsPerChild
ServerLimitdefine o teto de processosMaxConnectionsPerChildevita vazamento de memória
2️⃣ Testar se o Apache aceita a config
Antes de reiniciar:
apachectl -t
Se aparecer:
Syntax OK
Beleza.
Depois:
sudo systemctl restart apache2
3️⃣ Conferir se realmente aplicou
apachectl -t -D DUMP_RUN_CFG | grep -E "ServerLimit|ThreadsPerChild|MaxRequestWorkers"
Você deve ver algo próximo de:
ServerLimit: 50
ThreadsPerChild: 32
MaxRequestWorkers: 1600
4️⃣ MUITO IMPORTANTE: limite do Linux (isso derruba 90% dos setups)
🔹 Limite de arquivos abertos
Veja o atual:
ulimit -n
No meu caso tive como resultado 1024.
Para 1600 conexões, isso precisa ser ≥ 5000.
Edite:
sudo nano /etc/security/limits.conf
Adicione:
* soft nofile 65535
* hard nofile 65535
E no systemd do Apache:
sudo mkdir -p /etc/systemd/system/apache2.service.d
sudo nano /etc/systemd/system/apache2.service.d/limits.conf
[Service]
LimitNOFILE=65535
Depois:
sudo systemctl daemon-reexec
sudo systemctl restart apache2
5️⃣ Ver se o Apache está aguentando
Com mod_status ativo:
watch -n 1 "curl -s http://localhost/server-status?auto"
Observe:
BusyWorkersIdleWorkers
Se BusyWorkers encostar em 1600 → ainda é gargalo.
⚠️ ALERTA MUITO IMPORTANTE
1500 conexões só funcionam bem se:
- você usa PHP-FPM (e NÃO mod_php)
- ou a maioria das conexões é keep-alive / estática
- servidor tem RAM suficiente (mínimo ~8GB recomendado)
Se for mod_php, 1500 conexões = 💣
📌 Resumo rápido
✔ Aumentar MaxRequestWorkers
✔ Ajustar ServerLimit e ThreadsPerChild
✔ Aumentar ulimit no Linux
✔ Garantir RAM suficiente
✔ Preferir PHP-FPM
Se quiser, para ver o consumo de memória:
free -h
apachectl -M | grep php
Site oficial do apache: https://httpd.apache.org/

Perito em Computação Forense e Crimes Cibernéticos
Investigação Digital | Laudos Técnicos | Resposta a Incidentes
Bacharel em Sistemas da Informação, Certificado Microsoft Azure IA e MOS. Trabalho como Administrador de Redes, Firewall e Servidores Windows e Linux!
Minhas atividades favoritas são: Caminhar, Fazer Trilhas, Natureza, Insetos e claro ler sobre Tecnologia.
