Parando e reiniciando o servidor Apache HTTP
Graceful Restart
Sinal: USR1 apachectl -k graceful
O sinal USR1
ou graceful
faz com que o processo pai avise os filhos para saírem após sua solicitação atual (ou para sair imediatamente se eles “não está servindo nada). O pai relê seus arquivos de configuração e reabre seus arquivos de registro. À medida que cada filho morre, o pai o substitui por um filho da nova geração da configuração, que começa a atender a novas solicitações imediatamente.
Este código foi desenvolvido para respeitar sempre a diretriz de controle de processo dos MPMs, de forma que o número de processos e threads disponíveis para atender os clientes sejam mantidos nos valores adequados durante todo o processo de reinicialização. Além disso, respeita StartServers
da seguinte maneira: se após um segundo, pelo menos StartServers
novos filhos não foram criados, então crie o suficiente para compensar a folga. Portanto, o código tenta manter o número de filhos apropriados para a carga atual no servidor e respeitar seus desejos com o parâmetro StartServers
.
Usuários de mod_status
notará que as estatísticas do servidor não são definidas como zero quando um USR1
é enviado. O código foi escrito para minimizar o tempo em que o servidor não consegue atender a novas solicitações (elas serão enfileiradas pelo sistema operacional, para que “não sejam perdidas em nenhum caso) e para respeitar seus parâmetros de ajuste. fazer isso, ele deve manter o placar usado para controlar todos os filhos ao longo das gerações.
O módulo de status também usará um G
para indicar os filhos que são ainda atendendo a solicitações iniciadas antes do Graceful Restart ser fornecido.
No momento, não há como um script de rotação de log usando USR1
para saber com certeza que todos os filhos estão escrevendo o registro de pré-reinicialização foi concluído. Sugerimos que você use um atraso adequado após enviar o sinal USR1
antes de fazer qualquer coisa com o registro antigo. Por exemplo, se a maioria de seus acessos demorar menos mais de 10 minutos para ser concluído para usuários em links de baixa largura de banda, então você pode esperar 15 minutos antes de fazer qualquer coisa com o log antigo.
Ao reiniciar, uma verificação de sintaxe é executada primeiro, para garantir que não haja erros nos arquivos de configuração. Se o seu arquivo de configuração contiver erros, você receberá uma mensagem de erro sobre esse erro de sintaxe e o servidor se recusará a reiniciar. Isso evita a situação em que o servidor para e não pode reiniciar, deixando você com um servidor que não funciona.
Isso ainda não garante que o servidor será reiniciado corretamente. Para verificar a semântica dos arquivos de configuração, bem como a sintaxe, você pode tentar iniciar httpd
como um usuário não root. Se não houver erros, ele tentará abrir seus sockets e logs e falhará porque não é root (ou porque o httpd
em execução já possui essas portas vinculadas). Se falhar por qualquer outro motivo, provavelmente é um erro do arquivo de configuração e o erro deve ser corrigido antes de emitir o Graceful Restart.