Apache teljesítményhangolás: MPM modulok

  1. Apache Performance Tuning:
  2. Apache Performance Tuning: Swap Memory
  3. Apache Performance Tuning: MPM Directives
  4. Apache Performance Tuning: MPM Directives
  5. Apache Performance Tuning: MPM Directives
  6. Apache Performance Tuning: MPM direktívák konfigurálása
  7. How to Enable Piped Logging in Apache

Olvasási idő: 3 perc

Az Apache szerver teljesítményének megértéséhez messze a kulcskő a Multiprocessing Modules (MPM-ek). Ezek a modulok határozzák meg az alapját annak, hogy az Apache hogyan kezeli a többprocesszoros működést. A multiprocesszálás több művelet egyidejű futtatását jelenti egy több központi feldolgozóegységgel (CPU-maggal) rendelkező rendszerben.

Néhány MPM közül lehet választani; ez a cikk azonban a Liquid Web Linux alapú VPS-szervereken leggyakrabban használt modulokra összpontosít. Ezek a modulok a következők:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Más MPM
  • Melyik MPM a legjobb?

MPM Prefork

Az önszabályozó MPM Prefork a névadóját onnan kapta, hogy preemptív módon elágazik vagy új, azonos folyamatokba másolja magát, hogy várjon a beérkező kérésekre. Az MPM Prefork a többszálú feldolgozás nem szálakra épülő folyamatalapú megközelítése, az Apache-ot egyetlen fő szülő kiszolgálófolyamatban futtatja. Ez a szülőfolyamat felelős a szerverpoolját alkotó további gyermekszerverek kezeléséért. Az MPM Prefork használata során minden egyes gyermekkiszolgáló csak egyetlen kérést kezel. Ez a fókusz teljes elszigeteltséget biztosít a kiszolgálón kezelt többi kéréstől. Az MPM Prefork jellemzően kompatibilitási okokból használatos, ha nem szálakkal rendelkező könyvtárakra/szoftverekre, például mod_php-re (DSO) van szükség. Optimalizálási szempontból az MPM Prefork súlyos hiányosságokat mutathat a többszálas megoldásokhoz képest, mivel sokkal több erőforrást igényel a szálas MPM-hez hasonló forgalmi szintek eléréséhez. Erőforrás-igényes, mivel minden egyes kérésnél az Apache teljes másolatát kell létrehoznia.

Megjegyzés:
Ahol csak lehetséges, kerülje az MPM Prefork használatát. Mivel nem képes jól skálázódni a megnövekedett forgalommal, a legtöbb rendszerkonfigurációban gyorsan meghaladja a rendelkezésre álló hardvert.

MPM Worker

Egy hibrid pre-forking, többszálú, többprocesszoros webszerver. Az MPM Preforkhoz hasonlóan az MPM Worker is ugyanazt a megközelítést használja, egyetlen fő szülőfolyamat irányítja a szerverpooljában lévő összes gyermeket. Az MPM Preforkkal ellentétben azonban ezek a gyermekfolyamatok többszálú folyamatok, amelyek egyszerre több tucatnyi szálat (kérést) képesek kezelni. Az MPM Worker megteremtette az Apache szerverekben a többszálú multiprocesszálás alapjait, amely az Apache 2.2-ben vált stabillá. A szálankénti konfiguráció lehetővé teszi, hogy az Apache több száz kérést könnyedén kiszolgáljon, miközben csak egy tucatnyi gyermekfolyamatot tart a memóriában. Az MPM Worker nagy kapacitású és alacsony erőforrásigényű megoldást jelent a webszolgáltatás számára.

Megjegyzés
A KeepAliveTimeOut direktíva jelenleg azt határozza meg, hogy az Apache mennyi ideig várjon a kérésekre. A KeepAlive MPM Workerrel való használatakor a lehető legkisebb KeepAliveTimeout-ot használja (lehetőleg 1 másodperc).

MPM Event

Az MPM Worker forráskódja alapján az MPM Event közös konfigurációs direktívákat használ az MPM Workerrel. Majdnem ugyanúgy működik, mint az MPM Worker, kivéve a KeepAlive kérések kezelését. Az MPM Event egy dedikált Listener szálat használ minden egyes gyermekfolyamatban. Ez a Listening szál felelős azért, hogy a bejövő kéréseket egy elérhető munkaszálhoz irányítsa. A Listening szál megoldja az MPM Worker által tapasztalt problémát, amely egész szálakat zárol a KeepAliveTimeout várakozására. Az MPM Event Listener megközelítése biztosítja, hogy a munkaszálak nem “ragadnak” a KeepAliveTimeout lejáratára várva. Ez a módszer a lehető legtöbb kérést kezelő munkásszálak maximális számát tartja fenn.

Serverlimit információ

Tipp:
Az MPM Event stabilan működik az Apache 2-ben.4, a régebbi verziók alternatívaként használhatják az MPM Worker-t.

Más MPM-ek

Egy sor további MPM áll rendelkezésre. Ezek jellemzően az Apache Unix-alapú rendszerektől eltérő operációs rendszerekbe történő integrációjának részét képezik. Ezeknek speciális MPM-jei vannak, amelyek követelményeket támasztanak vagy az Apache-ot használják az adott rendszertípuson. Az ilyen típusú MPM-ek nem tartoznak e cikk tárgykörébe. A specifikus MPM-ekkel kapcsolatos további információkat az Apache hivatalos dokumentációjának MPM alapértelmezések című részében talál.

Megjegyzés:
A kísérleti és instabil MPM-ektől való távolmaradást javasoljuk. Az ilyen típusú szoftverek megbízhatatlansága miatt nem támogathatók.

Melyik MPM a legjobb?

Az optimalizálás mérlegelésekor fontos megérteni, hogy nem létezik olyan dolog, hogy az Apache-konfiguráció mindenre egyformán alkalmas. Az MPM helyes kiválasztásához számos mozgó változó, például a forgalom, a webhely kódja, a szerver típusa, a PHP Handler és a rendelkezésre álló hardver elemzése szükséges. Minden szerver egyedi, így a legjobb MPM teljesen szubjektív választás.

Ha az alkalmazáskódja nem támogatja a többszálú futást, akkor a választás elkerülhetetlenül az MPM Preforkra esik, pusztán kompatibilitási alapon. Az MPM Prefork olyan szoftvermodulokat tartalmaz, mint a mod_php (DSO). A KeepAlive nélküli MPM Worker nagyon jól teljesít, ha az alkalmazásod egy nagy teljesítményű terheléskiegyenlített API rendszer. Az MPM Event skálázhatósága és rugalmassága jó választás több kis és közepes webhely megosztott tárhely-konfigurációban történő üzemeltetésére.

A legtöbb egyszerű szerver beállítása jól működik az MPM Event önszabályozó alapértelmezett konfigurációjával, így ideális kiindulópont az optimalizálás hangolásához. A választás után az MPM ezután áttérhet a Konfigurációs irányelvekre, hogy áttekintse, mely beállítások vonatkoznak a kiszolgáló teljesítményére és optimalizálására. Vagy olvassa el a sorozat előző cikkét, az Apache teljesítményhangolását: Swap Memory.

Sorozat navigáció << Előző cikkKövetkező cikk >>

Szólj hozzá!