Configurarea MPM apache (prefork, muncitor, eveniment), dlx3

Configurarea MPM apache (prefork, muncitor, eveniment), dlx3

Apache (aka httpd) - una dintre cele mai populare serverul de web, care poate rula pe mai multe platforme. Diferite medii și platforme pot pune în aplicare aceeași funcționalitate în moduri diferite, astfel încât nu există nici o configurare rețetă perfectă, în fiecare caz necesită o abordare individuală. Setarea corectă de serviciu va face utilizatorii fericit și relaxat administrator.

Despre dezactivarea modulelor neutilizate, probabil, auzit totul, iar astăzi vom vorbi despre (Module Multi-Processing) MPM - prefork, muncitor și evenimente.

Apache are o arhitectură modulară, care vă permite să alegeți funcționalitatea trebuie să fie puse în aplicare cu ajutorul plug-in-uri. În Apache 2.0, arhitectura modulara a fost extins cele mai comune funcții server web. Serverul este acum livrat cu un set de module multi-procesare (MPM), responsabil pentru conexiunea la rețea, pentru primirea cererilor și de coordonare a procesului de prelucrare a proceselor lor copil.

Puteți utiliza tabelul poate fi utilizat pentru sistemele Unix pentru a determina un același modul:

Sistemul are suport

Practic, acest lucru înseamnă că, pentru Unix va fi aproape întotdeauna disponibile eveniment, din moment ce toate sistemele de operare moderne, susținute de aceste două funcții. * PHP în mod implicit nu acceptă fir de siguranță, astfel încât, dacă aveți nevoie de mod_php - utilizarea prefork.

Pentru a verifica modul care este utilizat într-un moment dat, puteți folosi comanda:

Implicit, modulul prefork Apache 2.4 conectat.

Atunci când se utilizează modulul de prefork fiecare cerere este deservit de un proces separat Apache. Principalul avantaj prefork - procesele de stabilitate sunt izolate unele de altele și de eroare în procesarea cererii sau nu afectează celelalte solicitări. Părintele este responsabil pentru lansarea de procese copil care conexiunea de serviciu. Apache încearcă întotdeauna să păstreze în rezervă mai mult de un proces (de obicei, se face referire la procedeele de schimb sau inactiv) către clienți nu a așteptat până când procesul copil începe să serviciu cererea acestora.

Una dintre cele mai importante linii directoare pentru stabilirea MPM - MaxRequestWorkers (sau MaxClients pentru versiunile de mai jos 2.3.13). De fapt, ea determină numărul maxim de clienți concurente și, respectiv, a directivei depinde de utilizarea maximă RAM.

fișier de configurare EXEMPLU (Apache / 2.2.15 Centos 6)

StartServers. numărul de procese care pornesc la pornirea Apache.
MinSpareServers. numărul minim de procese care sunt păstrate în rezervă.
MaxSpareServers. numărul maxim de procese care sunt păstrate în rezervă.
ServerLimit. Apache numărul maxim de procese (în general).
MaxClients. numărul maxim de conexiuni client simultane (prefork secțională = numărul maxim de procese copil).
MaxRequestsPerChild. numărul maxim de solicitări, după care procesul de copil este restartat (permite neutralizarea efectului scurgerii de memorie).

Pentru setările de bază trebuie modificate numai MaxClients (MaxRequestWorkers) și ServerLimit, parametrii rămași în prima etapă puteți lăsa implicit.

MaxClients de calcul (MaxRequestWorkers)

Să presupunem că avem nevoie să aloce 512Mb pentru Apache. Pentru a face acest lucru, afla cât de mult RAM consumă un proces de Apache (doar unul la acest punct, puteți scrie o carte separată, dar acum avem o cantitate suficientă de metoda descrisă mai jos): alerga PS și de a descoperi BIP procesului de copil (părintele va fi rulează ca root), apoi executați pmap și uite parametru inscriptibile / privat, în acest exemplu 1776K (1.7Mb).

Apoi, totul este simplu: 512 / 1.7 = 301 - această valoare ServerLimit și MaxClients (MaxRequestWorkers). În realitate, există alte figuri folosite în exemplul nou instalat Apache fără sarcină și fără mod_php, și este mai bine să ia o valoare medie de la consumul RAM de toate procesele copil, mai degrabă decât valoarea procesului aleatoriu și să efectueze măsurătorile în timpul sarcinii maxime, sau în timpul testelor de stres. Dacă nu știi cum va fi sarcina și cât de mult RAM va consuma un singur proces, ghidat de cifra de 25MB - 35MB (în cazul în care aveți de gând să utilizați mod_php), acest lucru este suficient pentru a începe, și mai târziu vin înapoi la acest parametru.

Pentru a cunoaște numărul de Apache procesele care se execută în momentul în care se poate folosi comanda:

Worker combină multi-protsessovy (multi-proces) și server multi-threaded (multi-let). Utilizarea fluxuri (fire de) ne permite de a servi mai multe cereri cu resurse hardware mai puține decât doar un protsessovy multi-server (prefork). Cu toate acestea, păstrează o mare parte din stabilitatea serverului multi-protsessovogo folosind mai multe procese, fiecare dintre care are o multitudine de fluxuri.

Cum funcționează:
- părintele este responsabil pentru lansarea proceselor de copii;
- fiecare proces copil creează un număr fix de fire, ThreadsPerChild directivă și un fir de ascultare (fir ascultător), care acceptă noua conexiune și le transmite fluxul de lucru;
- Apache încearcă întotdeauna să mențină un fluxuri de tragere de rezervă, care sunt gata pentru a servi cererile primite de îndată ce sosesc. În acest caz, clientul nu trebuie să aștepte un nou fir sau proces.

fișier de configurare EXEMPLU (Apache / 2.2.15 Centos 6)

StartServers. numărul de procese care pornesc la pornirea Apache.
MaxClients. numărul maxim de conexiuni client simultane (în lucrător secțională = numărul maxim de fire).
MinSpareThreads. Numărul minim de fluxuri care sunt păstrate în rezervă.
MaxSpareThreads. numărul maxim de fluxuri care sunt păstrate în rezervă.
ThreadsPerChild. numărul de fire per proces.
MaxRequestsPerChild. numărul maxim de solicitări, după care procesul de copil este restartat (permite neutralizarea efectului scurgerii de memorie).
ThreadLimit. numărul maxim de fluxuri pentru un singur proces (nu poate fi modificat fără a reporni serverul apache, spre deosebire de ThreadsPerChild)

S-ar putea fi o situație în care procesul a ajuns la MaxRequestsPerChild va aștepta finalizarea și opri acceptarea de noi conexiuni, dar va fi un flux care procesează încă o conexiune client. Deci, putem ajunge la pragul MaxClients (MaxRequestWorkers), cu toate că cererea reală de client este procesată mult mai puțin. Pentru a evita un astfel de comportament al serverului poate fi setat la 0 și MaxRequestsPerChild MaxSpareThreads = MaxClients (MaxRequestWorkers).

Calcul ServerLimit și MaxClients (MaxRequestWorkers)

Circuitul rămâne același, procesul de consum RAM un aspect ServerLimit înainte. MaxClients (MaxRequestWorkers) se calculează ca ServerLimit * ThreadsPerChild.

Eveniment permite de a servi un număr mare de conexiuni simultane prin transferul de prelucrare a cererii de lucru fluxurilor individuale (ascultători) fire de.

Acest MPM este conceput pentru a rezolva problema „ține în viață“, în HTTP. Odată ce clientul va prima cerere, se poate lăsa conexiunea deschisă prin trimiterea de solicitări suplimentare, folosind aceeași priză, pentru a evita aeriene de stabilire a unui nou-TCP conexiune. Dacă prefork și lucrător Apache salvează procesul copil / firul de așteptare pentru datele de la client, având ca rezultat un consum ineficient de resurse. Pentru a rezolva această problemă, eveniment folosește un fir dedicat (fir ascultător) pentru fiecare proces să se ocupe de prize Ascultare capabil, ține în viață, și prize pentru care rămâne doar pentru a transfera date la client. Astfel, firul lucrător primește o cerere gata și eliberată imediat după prelucrarea acestuia.

Directiva sunt aceleași ca și cea a lucrătorului MPM, principiul de calcul RAM rămâne aceeași.

  • Dacă utilizați o grămadă de + php apache (mod_fcgid, mod_fastcgi, mod_proxy_fcgi), este merită atenție lucrătorului sau eveniment.
  • Dacă aveți un samopisnaya mai vechi CMS sau folositi mod_php - ceva pentru tine, prefork, este probabil să fie singura opțiune disponibilă.
  • Nu copiați setările de pe Internet, pentru a calcula parametrii pentru sistemul dvs. de a face testarea după configurare.

Dacă vă place, puteți distribui