Ser DOS ou precisar de mais memória?

1

Eu tenho um servidor centos 6 rodando apache2, php e MySQL. A configuração do apache tem alguns sites virtuais, pois o servidor executa seis sites, três dos seis sites usam o MySQL e os outros três não.

Recentemente, descobri que os sites que usam o MySQL travam - relatam o erro "não é possível conectar-se ao banco de dados sql ..."

Depois de procurar nos logs, parece que há várias instâncias do apache em execução que consomem toda a minha memória - isso faz com que o servidor mate o processo do MySQL para impedir que o servidor morra, e momentos depois ele irá restaurar (às vezes tenho que consertar algumas mesas)

Para tentar controlar a situação, reduzi minhas max_connections para 100 - no entanto, isso não ajudou

Neste momento, não tenho certeza se preciso de mais memória (1GB instalado) ou se estou sendo atacado pelo DoS. Com toda a honestidade, esperamos altos volumes de tráfego para o servidor, mas como posso saber se um único IP está continuamente atingindo a caixa?

Eu colei alguma saída durante a "operação normal" abaixo se isso ajuda

free -m
             total       used       free     shared    buffers     cached
Mem:           992        771        221          0         15         87
-/+ buffers/cache:        668        323
Swap:          976         39        937

ps aux | grep apache
apache   17148  0.1  3.4 430836 35036 ?        S    06:34   0:10 /usr/sbin/httpd
apache   17150  0.1  3.3 430592 34560 ?        S    06:34   0:12 /usr/sbin/httpd
apache   17157  0.1  3.3 333192 33896 ?        S    06:34   0:13 /usr/sbin/httpd
apache   17164  0.1  3.3 333712 33984 ?        S    06:34   0:09 /usr/sbin/httpd
apache   17167  0.1  3.4 430576 34584 ?        S    06:34   0:12 /usr/sbin/httpd
apache   17168  0.1  3.3 430064 34312 ?        S    06:34   0:11 /usr/sbin/httpd
apache   17176  0.1  3.3 430564 34560 ?        S    06:34   0:11 /usr/sbin/httpd
apache   17184  0.1  3.4 432124 35500 ?        S    06:34   0:08 /usr/sbin/httpd
apache   17186  0.1  3.3 430088 34384 ?        S    06:34   0:14 /usr/sbin/httpd
apache   17188  0.1  3.3 333464 34028 ?        S    06:34   0:13 /usr/sbin/httpd
apache   17190  0.1  3.4 430548 34616 ?        S    06:34   0:08 /usr/sbin/httpd
apache   17193  0.1  3.3 333372 33548 ?        S    06:34   0:12 /usr/sbin/httpd
apache   17195  0.1  3.4 333716 34672 ?        S    06:34   0:11 /usr/sbin/httpd
apache   17225  0.1  3.3 430044 33584 ?        S    06:35   0:10 /usr/sbin/httpd
apache   17239  0.1  3.4 430568 34796 ?        S    06:35   0:11 /usr/sbin/httpd
apache   17241  0.1  3.3 430480 34284 ?        S    06:35   0:11 /usr/sbin/httpd
apache   17290  0.1  3.4 430948 34824 ?        S    06:35   0:10 /usr/sbin/httpd
apache   21095  0.1  3.1 331300 32344 ?        S    08:15   0:01 /usr/sbin/httpd
apache   30858  0.1  3.2 430148 33304 ?        S    Aug04   0:49 /usr/sbin/httpd
apache   31996  0.1  3.2 430168 33480 ?        S    Aug04   0:48 /usr/sbin/httpd
    
por Kam 05.08.2013 / 10:44

2 respostas

1

Parece que você precisa de mais memória RAM. Você também pode reduzir a quantidade máxima de processos HTTPd ou max param de memória para PHP.

    
por 05.08.2013 / 10:48
0

Concordo com @PauRudnitskiy, mas apenas algumas coisas que você deve analisar antes de simplesmente lançar mais memória no problema.

Como o Paul afirmou, dê uma olhada na configuração do seu apache e veja o número máximo de filhos e conexões que você pode ter. Se o número máximo de filhos também for o número de processos em execução, pode ser que você tenha um problema.

Verifique também qual é a carga do seu sistema usando o seguinte comando

uptime

Será algo parecido com isto

02:22:35 up 4:07, 4 users, load average: 0.10, 0.08, 0.06

se os números depois de " média de carregamento " parecerem grandes, então mostre que você está sob ataque. Simplesmente divde o maior número lá pelo número de núcleos de cpu que você tem, se o resultado for maior que 1 então significa que seu cpu está cheio.

Por último, só para adicionar o que estou mostrando é realmente para ver se o seu sob um pico de tráfego ou sob carga extra. Você precisará examinar seus logs do apache para tentar ver se o seu, sob algum tipo de ataque, normalmente é visto pelo mesmo endereço IP fazendo muitas solicitações à página e outras coisas que os usuários normais não fariam.

    
por 05.08.2013 / 11:25