Embora haja muitas maneiras de resolver isso, eu encontrei um pergunta antiga no ServerFault que sugere uma regra simples do iptables
iptables -I INPUT -p tcp --dport 80 \
-m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP
Atual isso é o que eu recebo quando estou no topo
Tasks: 151 total, 2 running, 149 sleeping, 0 stopped, 0 zombie
Cpu(s): 74.1%us, 1.3%sy, 0.0%ni, 43.6%id, 0.0%wa, 0.0%hi, 0.3%si, 3.6%st
Mem: 4045608k total, 3447088k used, 598520k free, 13588k buffers
Swap: 131068k total, 0k used, 131068k free, 387916k cached
3569 www-data 20 0 349m 72m 14m S 14 1.8 1:49.47 apache2
3572 www-data 20 0 349m 72m 14m S 14 1.8 1:47.16 apache2
3611 www-data 20 0 348m 70m 13m R 14 1.8 1:43.37 apache2
3565 www-data 20 0 349m 71m 13m S 13 1.8 1:45.07 apache2
3608 www-data 20 0 349m 73m 14m S 13 1.9 1:45.83 apache2
3550 www-data 20 0 349m 71m 13m S 13 1.8 1:49.43 apache2
3574 www-data 20 0 349m 72m 14m S 13 1.8 1:42.73 apache2
3602 www-data 20 0 349m 71m 13m S 13 1.8 1:40.62 apache2
3603 www-data 20 0 349m 71m 12m S 12 1.8 1:44.38 apache2
3561 www-data 20 0 349m 72m 14m S 12 1.8 1:45.13 apache2
3564 www-data 20 0 349m 72m 14m S 12 1.8 1:44.19 apache2
3531 www-data 20 0 349m 72m 14m R 6 1.8 1:43.68 apache2
3543 www-data 20 0 349m 72m 14m R 6 1.8 1:46.76 apache2
3604 www-data 20 0 349m 72m 14m S 2 1.8 1:44.09 apache2
3549 www-data 20 0 343m 66m 14m R 2 1.7 1:45.05 apache2
3052 mysql 20 0 2361m 83m 11m S 1 2.1 0:22.64 mysqld
1 root 20 0 24332 3224 2316 S 0 0.1 0:00.95 init
Olhando pelos arquivos de log, parece que eu acertei maxClients, mas não tenho idéia de como isso está acontecendo porque ninguém está visualizando o site. Configuração atual do apache abaixo:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 6
MaxSpareServers 12
MaxClients 50
MaxRequestsPerChild 3000
</IfModule>
Isso começou a acontecer aleatoriamente, sem atualizações, sem alterações.
Embora haja muitas maneiras de resolver isso, eu encontrei um pergunta antiga no ServerFault que sugere uma regra simples do iptables
iptables -I INPUT -p tcp --dport 80 \
-m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP
Você pode usar apache2ctl fullstatus
para obter uma lista completa de clientes remotos e a URL que eles estão visualizando. EDITAR : para ficar claro, eu estava falando sobre o mod_status do Apache. Depois de carregá-lo, você pode emitir (em um terminal) o comando acima para ter um dump detalhado do status do Apache.
Se você detectar um padrão (por exemplo: muita conexão aberta a partir de um único IP remoto), você poderá usar o fail2ban para bloquear o cliente solicitante.
Tags wordpress apache-2.4 ubuntu