Oprirea și repornirea serverului Apache HTTP


Restartarea grațioasă

Semnal: USR1 apachectl -k graceful

Semnalul USR1 sau graceful face ca procesul părinte să sfătuiască copiii să iasă după cererea lor curentă (sau să iasă imediat dacă „nu servește nimic). Părintele își citește din nou fișierele de configurare și își redeschide fișierele jurnal. Pe măsură ce fiecare copil moare, părintele îl înlocuiește cu un copil din noua generație de configurație, care începe să servească noi cereri imediat.

Acest cod este conceput pentru a respecta întotdeauna directiva de control al proceselor MPM-urilor, astfel încât numărul de procese și fire disponibile pentru deservirea clienților va fi menținut la valorile corespunzătoare pe tot parcursul procesului de repornire. În plus, respectă StartServers în modul următor: dacă după o secundă cel puțin StartServers copii noi nu au fost creați, apoi creați suficient pentru a ridica slăbiciunea. Prin urmare, codul încearcă să mențină atât numărul de copii corespunzător încărcării actuale pe server, cât și să vă respecte dorințele cu parametrul StartServers.

Utilizatorii mod_status va observa că statisticile serverului nu sunt setate la zero când se trimite un USR1. Codul a fost scris atât pentru a minimiza timpul în care serverul nu este în măsură să servească noi solicitări (acestea vor fi puse în coadă de sistemul de operare, deci nu vor fi pierdute în niciun caz) și pentru a respecta parametrii de reglare. faceți acest lucru, trebuie să țină tabloul de bord folosit pentru a ține evidența tuturor copiilor de-a lungul generațiilor.

Modulul de stare va utiliza, de asemenea, un G pentru a indica acei copii care sunt cererile de servire încă au început înainte de reluarea grațioasă.

În prezent, nu există nicio modalitate pentru un script de rotație a jurnalelor care utilizează USR1 să știe cu siguranță că toți copiii care scriu jurnalul de pre-repornire s-a terminat. Vă sugerăm să utilizați o întârziere adecvată după trimiterea semnalului USR1 înainte de a face ceva cu vechiul jurnal. De exemplu, dacă majoritatea accesărilor dvs. durează mai puțin până la 10 minute pentru utilizatorii cu linkuri cu lățime de bandă redusă, atunci ați putea aștepta 15 minute înainte de a face orice cu vechiul jurnal.

Când lansați o repornire, se execută mai întâi o verificare a sintaxei, pentru a vă asigura că nu există erori în fișierele de configurare. Dacă fișierul dvs. de configurare conține erori, veți primi un mesaj de eroare despre acea eroare de sintaxă și serverul va refuza să repornească. Acest lucru evită situația în care serverul se oprește și apoi nu poate reporni, lăsându-vă un server care nu funcționează.

Acest lucru nu va garanta în continuare că serverul va reporni corect. Pentru a verifica semantica fișierelor de configurare, precum și sintaxa, puteți încerca să porniți httpd ca utilizator non-root. Dacă nu există erori, va încerca să-și deschidă soclurile și jurnalele și să eșueze deoarece nu este rădăcină (sau pentru că httpd rulează deja acele porturi legate). Dacă nu reușește din orice alt motiv, atunci este probabil o eroare a fișierului de configurare și eroarea ar trebui remediată înainte de a lansa restartul grațios.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *