Falha no servidor em minutos devido ao alto uso do httpd-apache (ataque ou bug)

1

Na última semana, de repente, recebi erros no meu servidor. Eu tento acessar meu site eu recebo 503 erros.

Quando eu verifico top e outras coisas eu vejo estas:

  • 60-65 processos de httpd (apache). (Normalmente tenho 30-35 processos httpd)
     Você pode ver o gráfico aqui: link
  • O MySQL faz uma troca de 350 MB. (Normalmente faz 40-50 MB swap)
        O primer de sintonia diz que:
    • Max_connections atuais = 250
    • Thread_connected atual = 96
    • Histórico max_used_connections = 97
  • Server todos os gráficos: dados gerais
  • Por dentro de httpd.conf
    • Limite do servidor 60
    • MaxClients 60
  • Em var\www\vhosts\example.com\logs\access_log não há nada que pareça um ataque (D) DOS. Eu vejo o pedido normal do servidor.
  • Nada suspeito em var\log\httpd\access_log
  • Dentro do meu var\www\vhosts\example.com\logs\error_log , vejo muitos erros como este:
    • [Fri Jan 17 10:56:26 2014] [warn] [client 78.180.71.157] mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper
  • Por dentro de \var\log\mysqld_log sem erro
  • Por dentro de \var\log\error_log sem erro nesse tempo
  • Por dentro de \var\log\suexec_log sem erro

Como posso diagnosticar o que faz com que meu site faça com que o DISK IO 100%, a média de carregamento 10, o swap muito alto e o servidor não responda a solicitações. E como posso impedir que isso aconteça no futuro?

Quando eu reinicio o mysql e o httpd resolve problemas. Mas como posso diagnosticar a causa

    
por trante 17.01.2014 / 13:15

1 resposta

2

O aviso mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper significa que o Apache esgotou todos os recursos disponíveis e não pode atender o cliente. O cliente receberá um erro 503 .

Nos gráficos, é um pico de tráfego ou um erro de configuração do software que está causando seus problemas. Quando o pedido de RAM aumenta, o seu servidor fica sem RAM, o que faz com que o pico de E / S troque tudo que puder para o disco (daí o 100% I / O), o que faz com que seu iowait também aumente. Quando todos os recursos estiverem esgotados ou seu servidor estiver lento o suficiente para expirar para o Apache, ele emitirá esse aviso.

Reiniciar provavelmente libera essa memória. Sua resposta seria uma das duas coisas: 1) aumentar a RAM disponível para seu servidor por um aumento real ou descarregar o MySQL (que é um hog de memória) em outro servidor, ou 2) revisar seu código para ver se há um vazamento.

    
por 17.01.2014 / 13:52