Arresto e riavvio del server HTTP Apache
Riavvio graduale
Segnale: USR1 apachectl -k graceful
Il segnale USR1
o graceful
fa sì che il processo genitore consigli ai figli di uscire dopo la loro richiesta corrente (o di uscire immediatamente se “non serve nulla). Il genitore rilegge i suoi file di configurazione e riapre i suoi file di log. Quando ogni figlio muore, il genitore lo sostituisce con un figlio della nuova generazione della configurazione, che inizia a servire le nuove richieste immediatamente.
Questo codice è progettato per rispettare sempre la direttiva di controllo del processo degli MPM, quindi il numero di processi e thread disponibili per servire i client sarà mantenuto ai valori appropriati durante tutto il processo di riavvio. Inoltre, rispetta StartServers
nel modo seguente: se dopo un secondo almeno StartServers
non sono stati creati nuovi figli, quindi creane abbastanza per riprendere il gioco. Quindi il codice cerca di mantenere sia il numero di bambini appropriato per il carico corrente sul server, sia di rispettare i tuoi desideri con il parametro StartServers
.
Utenti di mod_status
noterà che le statistiche del server non sono impostate su zero quando viene inviato un USR1
. Il codice è stato scritto sia per ridurre al minimo il tempo in cui il server non è in grado di servire nuove richieste (verranno messe in coda dal sistema operativo, in modo che “non vadano perse in ogni caso) sia per rispettare i vostri parametri di ottimizzazione. fare ciò deve mantenere il tabellone utilizzato per tenere traccia di tutti i bambini attraverso le generazioni.
Il modulo di stato utilizzerà anche un G
per indicare quei bambini che sono continua a servire le richieste iniziate prima che fosse dato il grazioso riavvio.
Al momento non cè modo per uno script di rotazione del log che utilizzi USR1
per sapere con certezza che tutti i bambini il registro di pre-riavvio è terminato. Ti suggeriamo di utilizzare un ritardo adeguato dopo aver inviato il segnale USR1
prima di eseguire qualsiasi operazione con il vecchio registro. Ad esempio, se la maggior parte dei tuoi hit richiede meno di 10 minuti per il completamento per gli utenti con collegamenti a larghezza di banda ridotta, quindi è possibile attendere 15 minuti prima di eseguire qualsiasi operazione con il vecchio registro.
Quando si esegue un riavvio, viene prima eseguito un controllo della sintassi, per assicurarsi che non vi siano errori nei file di configurazione. Se il file di configurazione contiene errori, verrà visualizzato un messaggio di errore relativo a tale errore di sintassi e il server si rifiuterà di riavviarsi. Ciò evita la situazione in cui il server si arresta e quindi non può riavviarsi, lasciandoti con un server non funzionante.
Ciò ancora non garantirà che il server si riavvierà correttamente. Per controllare la semantica dei file di configurazione e la sintassi, puoi provare ad avviare httpd
come utente non root. Se non ci sono errori, tenterà di aprire i suoi socket e log e fallirà perché “non è root (o perché httpd
attualmente in esecuzione ha già quelle porte associate). per qualsiasi altra ragione, probabilmente è un errore del file di configurazione e lerrore dovrebbe essere corretto prima di eseguire il normale riavvio.