Acordarea performanței Apache: MPM Modules

  1. Apache Performance Tuning: Swap Memory
  2. Apache Performance Tuning: MPM Modules
  3. Apache Performance Tuning: Directive MPM
  4. Apache Performance Tuning: Configurarea directivelor MPM
  5. Cum se activează logarea prin conducte în Apache

Timp de citire: 3 minute

Principala piatră de temelie pentru înțelegerea performanței serverului Apache este de departe modulele de multiprocesare (MPM). Aceste module determină baza pentru modul în care Apache abordează multiprocesarea. Multiprocesarea înseamnă rularea simultană a mai multor operații într-un sistem cu mai multe unități centrale de procesare (CPU Cores).

Există multe MPM-uri din care se poate alege; cu toate acestea, acest articol se concentrează pe modulele cele mai frecvent utilizate care se găsesc în serverele VPS bazate pe Liquid Web Linux. Aceste module sunt:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Alte MPM-uri
  • Care MPM este cel mai bun?

MPM Prefork

MPM Prefork, care se autoreglează, își trage numele de la modul în care se bifurcă sau se copiază în noi procese identice, în mod preventiv, pentru a aștepta cererile primite. O abordare a multiprocesării bazată pe procese fără fire de execuție, MPM Prefork rulează Apache într-un singur proces server principal părinte. Acest proces părinte este responsabil pentru gestionarea tuturor serverelor copil suplimentare care alcătuiesc grupul său de servere. În timpul utilizării MPM Prefork, fiecare server copil gestionează doar o singură cerere. Această concentrare asigură o izolare completă față de alte cereri tratate pe server. MPM Prefork este utilizat în mod obișnuit pentru compatibilitate atunci când sunt necesare biblioteci/software-uri non-threaded, cum ar fi mod_php (DSO). Din punct de vedere al optimizării, MPM Prefork poate fi extrem de deficitar în comparație cu soluțiile cu mai multe fire, necesitând mult mai multe resurse pentru a atinge niveluri de trafic similare cu cele ale unui MPM cu fire. Este intensiv din punct de vedere al resurselor datorită necesității sale de a genera copii complete ale Apache pentru fiecare solicitare.

Nota:
Evitați utilizarea MPM Prefork ori de câte ori este posibil. Incapacitatea sa de a se adapta bine la creșterea traficului va depăși rapid hardware-ul disponibil pe majoritatea configurațiilor de sistem.

MPM Worker

Un server web hibrid preforking, multi threaded, multiprocesare. În același mod ca și MPM Prefork, MPM Worker folosește aceeași abordare cu un singur proces părinte principal care guvernează toți copiii din cadrul grupului său de servere. Cu toate acestea, spre deosebire de MPM Prefork, acești copii sunt procese cu mai multe fire care pot gestiona zeci de fire (cereri) simultan. MPM Worker a pus bazele pentru multiprocesarea cu mai multe fire în serverele Apache, care a devenit stabilă în Apache 2.2. Configurația threaded permite Apache să deservească sute de cereri cu ușurință, păstrând în același timp doar o duzină de procese copil în memorie. MPM Worker reprezintă atât o soluție de mare capacitate, cât și una cu resurse reduse pentru servicii web.

Nota
Directiva KeepAliveTimeOut definește în prezent durata de timp în care Apache va aștepta cererile. Atunci când folosiți KeepAlive cu MPM Worker, utilizați un KeepAliveTimeout cât mai mic posibil (de preferință 1 secundă).

MPM Event

Bazat pe codul sursă al MPM Worker, MPM Event împarte directivele de configurare cu MPM Worker. Funcționează aproape identic cu MPM Worker, cu excepția cazului în care este vorba de gestionarea cererilor KeepAlive. MPM Event utilizează un fir de ascultare dedicat în fiecare proces copil. Acest fir de ascultare este responsabil pentru direcționarea cererilor primite către un fir de lucru disponibil. Firul de ascultare rezolvă problema întâmpinată de MPM Worker, care blochează fire întregi în așteptarea KeepAliveTimeout. Abordarea de ascultare a MPM Event asigură că firele de lucru nu sunt „blocate” în așteptarea expirării KeepAliveTimeout. Această metodă menține numărul maxim de fire de lucru care gestionează cât mai multe cereri.

Serverlimit Information

Sfat:
MPM Event este stabil în Apache 2.4, versiunile mai vechi pot folosi MPM Worker ca alternativă.

Alte MPM-uri

Există un sortiment de MPM-uri suplimentare disponibile. Acestea fac parte, de obicei, din integrarea Apache în alte sisteme de operare decât cele bazate pe Unix. Acestea au MPM-uri specifice care sunt cerințe sau care utilizează Apache pe tipurile lor de sisteme respective. Aceste tipuri de MPM-uri depășesc sfera de aplicare a acestui articol. Puteți găsi mai multe informații despre MPM-uri specifice în secțiunea MPM Defaults din documentația oficială Apache.

Nota:
Vă recomandăm să stați departe de MPM-uri experimentale și instabile. Natura nesigură a acestor tipuri de software le face nesuportabile.

Ce MPM este cel mai bun?

Când vă gândiți la optimizare, este esențial să înțelegeți că nu există o configurație Apache de tip „one-size-fits-all”. Alegerea corectă a unui MPM necesită analiza multor variabile în mișcare, cum ar fi traficul, codul site-ului, tipul de server, PHP Handler și hardware-ul disponibil. Fiecare server este unic, ceea ce face ca cel mai bun MPM să fie o alegere complet subiectivă.

Dacă codul aplicației dvs. nu suportă multi-threading, atunci alegerea dvs. va fi în mod inevitabil MPM Prefork, exclusiv din motive de compatibilitate. MPM Prefork include module software precum mod_php (DSO). MPM Worker fără KeepAlive se comportă foarte bine dacă aplicația dvs. este un sistem API de înaltă performanță cu încărcare echilibrată. Scalabilitatea și flexibilitatea MPM Event este o alegere solidă pentru găzduirea mai multor site-uri mici și mijlocii într-o configurație de găzduire partajată.

Cele mai multe configurații de servere simple funcționează bine în cadrul configurației implicite de auto-guvernare a MPM Event, ceea ce o face un punct de plecare ideal pentru reglarea optimizării. Odată ales, un MPM poate trece apoi la Directivele de configurare pentru a revizui ce setări se referă la performanța și optimizarea serverului. Sau consultați articolul nostru anterior din această serie, Apache Performance Tuning: Swap Memory.

Navigare în serie << Articolul precedent Articolul următor >>

Lasă un comentariu