O Apache2 falha às 7 da manhã todos os dias com “MaxClients atingidos”. Corre bem o resto do dia

2

Se você está procurando um desafio ... você o encontrou.

Todos os dias entre as 07:01:30 - 07:03:00 a instalação do Apache falha. Apenas naquele momento. Funciona bem em qualquer outra hora do dia. Eu tive esse problema por cerca de um ano agora, pesquisei por horas e tentei muitas coisas. Meu palpite é que algo está programado por volta dessa época que causa isso. Até agora não consegui encontrá-lo.

Agora você vai dizer, oh, olhe para este link, você é uma pessoa preguiçosa! Apenas a configuração maxclients! Confie em mim, mas infelizmente, nenhuma das soluções neste site ou em qualquer outro site funcionou. Agora, para adicionar a isso, para mim, mistério, o servidor funciona absolutamente bem durante todo o dia. Apenas em ~ 07: 01 ele cai com erro abaixo.

O erro que recebo é: [Sun jul 28 07:01:30 2013] [error] o servidor atingiu a configuração MaxClients, considere elevar a configuração MaxClients [Seg Jul 29 07:03:09 2013] O servidor [error] atingiu a configuração MaxClients, considere elevar a configuração MaxClients [Tue Jul 30 07:01:54 2013] [error] o servidor atingiu a configuração MaxClients, considere elevar a configuração MaxClients

O aviso de segunda-feira está um pouco errado. Isso porque, às 07:01:00 fiz um serviço de reinicialização do apache2. Acabou de fazer esse acidente chegar um pouco mais tarde. Hã? Talvez um acaso ... Eu não entendo nada disso.

Eu usei o apachetop para verificar o tráfego. Pouco antes de receber este erro, não há muitos usuários no site, talvez 10-20. Durante as noites, no entanto, podemos obter centenas de visitantes ao mesmo tempo. Eu vi o Apache lidar com até 100 pedidos por segundo! O problema não é de forma alguma que o servidor atingiu o MaxClients porque as 7h é uma hora realmente tranquila para o site. Os registros de acesso não mostram nada de especial. Alguns cliques aqui e ali.

Então, aos meus olhos, não pode ser um problema de keepalive. Isso não causaria uma pane quase exatamente na mesma hora todos os dias. Não pode ser um ataque, porque por que isso seria às 7h todos os dias durante um ano? Além disso, os registros não mostram nenhum tipo de tráfego.

Isso é o que eu tentei e verifiquei:  - Aumentando a configuração maxclients (tão alta quanto 512. Sim, também ServerLimit). Tornando muito mais baixo. Nada funciona.  - Redução do tempo de atividade na configuração do Apache.  - Movi todos os meus recursos (js, css, imagens) para outro servidor com nginx usando haproxy. Não é a quantidade de pedidos!  - Atualizei o Ubuntu para 12.04.  - Tentei todo tipo de ferramenta para verificar minha configuração do apache  - Movi o cronjob diário uma hora antes em / etc / crontab. Ainda ~ 7: 00.  - Verifiquei outros usuários para crontabs. Nada.  - mod_status não está mostrando uma quantidade anormal de conexões.

Existe uma instalação do haproxy antes do Apache. Mas eu tentei sem isso, e o Apache ainda falha. Os logs do Haproxy indicam que o servidor caiu (estou usando o httpcheck). Eu tentei desligar essa verificação, isso faz com que o site não carregue de jeito nenhum (o tempo limite).

Informação da versão: Estou executando o Ubuntu 12.04, mas também tive esse problema executando 11.10. Estou usando o prefork. Versão do servidor: Apache / 2.2.22 (Ubuntu) Servidor construído: 12 de julho de 2013 13:37:10

Não há crontabs, exceto para root:    para usuário em $ (cut -f1 -d: / etc / passwd); do crontab -u $ usuário -l; feito1

O servidor tem muitos recursos, com a maioria dos gigabytes de RAM livres.

Obviamente, estou sentindo falta de algo aqui. Onde mais o Ubuntu pode agendar? O Apache está fazendo algo especial por volta das 7h que não está no crontab?

Obrigado!

~~~~ Eu não posso responder minha pergunta, mas está resolvido! ~~~~

Responder: Aaaaaah eu encontrei. Janne Pikkarainen acertou na primeira vez. Aparentemente eu não estava usando meus olhos. Provavelmente não é o comando correto com o netstat. Porque eu acabei de ver um monte de conexões ... (claro, é um momento muito ocupado agora, mas isso não explica dez vezes mais conexões de repente).

Sem mais delongas, foi o servidor de banco de dados. Está rodando um mysqldump todos os dias às 7 da manhã. Porque é um servidor diferente, nem chegou a mim que eu deveria verificar esse também.

Eu apenas tentei executar esse backup e logo os pedidos começam a se acumular. E bam! Apache lança erro e pára de responder. Desenvolvedor estúpido (eu) é estúpido :) Portanto, a correção nunca foi a reinicialização do apache2 do serviço, o backup acabou e o servidor respondeu novamente. Então, na verdade, não caiu em nada.

Obrigado a todos pela ajuda. Não é um mistério assim ... Eu sabia que perdia alguma coisa em algum lugar. Espero que esta resposta ajude alguém, algum dia :)

    
por Bart 30.07.2013 / 07:34

1 resposta

2

Realmente isso deve ser um comentário, mas é muito longo.

my apache installation crashes

Tem a certeza? Alcançar maxclients implica que o programa está sendo executado, "travando" significa que ele parou (e deveria ter logado isso e ter descartado um arquivo principal). Eles são coisas muito diferentes. Se parou, onde está o arquivo principal? Você já tentou obter um stacktrace dele?

there aren't many users on the site, perhaps 10-20

Métrica sem significado. Quantas conexões estabelecidas existem a qualquer momento? Quando "cai"? Qual é o status do servidor antes de uma falha? Isso registra o netstat?

O que seus logs de sistema mostram?

So in my eyes, it can't be a keepalive issue.

Não vejo nada em sua postagem para excluir os keepalives como um fator contributivo.

    
por 30.07.2013 / 10:22