Alta CPU + Memória, sem visitantes

1

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.

    
por Starboy 20.07.2015 / 16:06

2 respostas

1

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
    
por 21.07.2015 / 11:54
0

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.

    
por 20.07.2015 / 18:51