O Apache pára aleatoriamente à noite sem erros nos logs

1

Eu tenho um servidor na AWS que está estável há anos. Está executando o Apache 2.2.22 no Ubuntu 12.04.5 LTS. Eu regularmente executo atualizações de segurança no topo do mês.

Recentemente, o Apache parou de atender a pedidos por volta da meia-noite e, às vezes, mais tarde, no início da manhã (das 2h às 4h Central). Para nós, este é um período de baixo uso, mas ainda temos um fluxo constante de solicitações. Nossa atividade diurna é muito maior e nunca diminui durante o dia (pelo menos até o momento). Até agora, ele sempre aparece depois de cerca de 10 minutos e está sempre de volta ao normal pela manhã. Devido ao tempo do problema, não suspeito que tenha a ver com o MaxClients, como vários outros tópicos sugerem.

Não vejo nada em nenhum dos logs de erros do apache (temos cerca de 10 hosts virtuais) nem no dmesg nem no syslog. Na verdade, eu leio todos os log em / var / log esta manhã. No momento da edição, não vejo nada acontecendo.

Eu consegui pegá-lo quando ele está inativo por causa de uma notificação do monitor de site. Durante esse tempo, posso verificar se o apache não está atendendo a solicitações. Eu posso entrar no servidor embora. Eu suspeitava de problemas de rede, mas é estranho que uma porta esteja bem e outra não. Consegui confirmar que o apache não atenderá solicitações do host local nesse servidor. Então, parece não ser hardware.

Reiniciar o serviço apache traz de volta os sites, mas apenas por alguns minutos. Eu estava seguindo as toras ao vivo quando caiu e ainda nada. Nada é mostrado em qualquer log no momento da edição. A reinicialização sempre parece resolvê-lo (por pelo menos mais 24 horas e, às vezes, mais).

O suporte da Amazon não vê nada de errado com o servidor. Eu suspeito que o Apache está falhando e a reinicialização do serviço não está limpa. Ou algo está acontecendo no nível do kernel / rede do sistema operacional. E, novamente, isso sempre acontece quando a carga da CPU está baixa. Memória parece bem. Nenhum dos "suspeitos do costume" está acontecendo. Apenas silenciosamente pára de funcionar.

Devido à falta de informação que tenho do servidor, não tenho ideia do que mais procurar. Estou inclinado a reconstruir o servidor na próxima semana, mas gostaria muito de descobrir isso.

Talvez haja algo mais que eu deva analisar durante o problema. Além disso, se houver algum registro, eu "volto" para obter mais informações, me avise. Atualmente não tenho registros que eu possa postar que sejam úteis. Essa coisa toda parece loucura para mim porque eu estou acostumado a falhas em ficar logado de alguma forma, especialmente se for o apache ou o kernel (nós somos amigos de longa data).

    
por Phil 24.07.2015 / 19:00

1 resposta

1

Eu sugiro que, da próxima vez que você iniciá-lo, inicie uma cadeia para que, depois que ela morrer, você possa investigar as chamadas que estavam acontecendo antes de falhar. Você pode usar o seguinte comando depois de iniciá-lo para se certificar de anexar ao processo mestre e a todos os seus filhos e quaisquer novos que forem bifurcados.

pidlist=''; for pid in 'ps ax | grep httpd | awk '{print $1}''; do pidlist="$pidlist -p $pid"; done; strace -tt -F -f $pidlist 2>&1 |tee /root/apache_strace.out

Eu não sei se na sua distro se o processo do Apache é chamado httpd ou alguma outra coisa (como apache ou apache2), mas se não for httpd, então troque o nome correto pelo comando acima.

    
por 24.07.2015 / 19:12