Apachen suorituskyvyn virittäminen: MPM-moduulit

  1. Apache Performance Tuning: Swap Memory
  2. Apache Performance Tuning: MPM Modules
  3. Apache Performance Tuning: MPM Directives
  4. Apache Performance Tuning: Configuring MPM Directives
  5. How to Enable Piped Logging in Apache

Reading Time: 3 minutes

Apache-palvelimen suorituskyvyn ymmärtämisen kivijalka ovat ylivoimaisesti moniprosessorimoduulit (MPM). Nämä moduulit määrittävät perustan sille, miten Apache käsittelee moniprosessointia. Moniprosessointi tarkoittaa useiden toimintojen suorittamista samanaikaisesti järjestelmässä, jossa on useita keskusyksiköitä (CPU-ytimiä).

Valittavanasi on monia MPM-moduuleja; tässä artikkelissa keskitytään kuitenkin yleisimmin käytettyihin moduuleihin, joita löytyy Liquid Web Linux -pohjaisista VPS-palvelimista. Nämä moduulit ovat:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Muut MPM:t
  • Mikä MPM on paras?

MPM Prefork

Itsesäätyvä MPM Prefork on saanut nimensä siitä, miten se haarautuu tai kopioi itsensä uusiksi identtisiksi prosesseiksi ennaltaehkäisevästi odottamaan saapuvia pyyntöjä. MPM Prefork on säikeettömään prosessiin perustuva lähestymistapa moniprosessointiin, ja se käyttää Apachea yhdessä emopalvelimen pääprosessissa. Tämä emoprosessi on vastuussa sen palvelinpooliin kuuluvien lapsipalvelinten hallinnasta. MPM Preforkia käytettäessä jokainen lapsipalvelin käsittelee vain yhden pyynnön. Tämä keskittyminen tarjoaa täydellisen eristyksen muista palvelimella käsiteltävistä pyynnöistä. MPM Preforkia käytetään yleensä yhteensopivuuden vuoksi, kun tarvitaan muita kuin säikeistettyjä kirjastoja/ohjelmistoja, kuten mod_php (DSO). Optimoinnin kannalta MPM Prefork voi olla pahasti puutteellinen verrattuna monisäikeisiin ratkaisuihin, sillä se vaatii huomattavasti enemmän resursseja saavuttaakseen samanlaisen liikennemäärän kuin monisäikeinen MPM. Se on resurssi-intensiivinen, koska sen täytyy synnyttää Apachen täydet kopiot jokaista pyyntöä varten.

Huomautus:
Vältä MPM Preforkin käyttöä aina kun mahdollista. Sen kyvyttömyys skaalautua hyvin lisääntyvän liikenteen myötä ylittää nopeasti käytettävissä olevan laitteiston useimmissa järjestelmäkokoonpanoissa.

MPM Worker

Hybridi pre-forking, monisäikeinen, moniprosessorinen verkkopalvelin. Samalla tavalla kuin MPM Prefork, MPM Worker käyttää samaa lähestymistapaa, jossa yksi emoprosessi hallitsee kaikkia palvelinpooliinsa kuuluvia lapsia. Toisin kuin MPM Prefork, nämä lapsiprosessit ovat kuitenkin monisäikeisiä prosesseja, jotka voivat käsitellä kymmeniä säikeitä (pyyntöjä) samanaikaisesti. MPM Worker on luonut perustan Apache-palvelimien monisäikeiselle moniprosessoinnille, joka vakiintui Apache 2.2:ssa. Säikeistetyn konfiguraation ansiosta Apache pystyy palvelemaan helposti satoja pyyntöjä säilyttäen muistissa vain kymmenkunta lapsiprosessia. MPM Worker tekevät sekä suuren kapasiteetin että vähäisten resurssien ratkaisun verkkopalveluun.

Huomautus
Direktiivi KeepAliveTimeOut määrittelee tällä hetkellä ajan, jonka Apache odottaa pyyntöjä. Kun hyödynnät KeepAlivea MPM Workerin kanssa, käytä mahdollisimman pientä KeepAliveTimeoutia (mieluiten 1 sekunti).

MPM Event

Pohjautuu MPM Workerin lähdekoodiin, MPM Event jakaa konfiguraatiodirektiivit MPM Workerin kanssa. Se toimii lähes identtisesti MPM Workerin kanssa lukuun ottamatta KeepAlive-pyyntöjen käsittelyä. MPM Event käyttää omaa kuuntelijasäiettä jokaisessa lapsiprosessissa. Tämän kuuntelijasäikeen tehtävänä on ohjata saapuvat pyynnöt käytettävissä olevaan työntekijäsäikeeseen. Kuuntelijasäie ratkaisee MPM Workerin ongelman, joka lukitsee kokonaisia säikeitä odottamaan KeepAliveTimeoutia. MPM Eventin kuuntelijalähestymistapa varmistaa, että työläiskierteet eivät ”jumiudu” odottamaan KeepAliveTimeoutin umpeutumista. Tällä menetelmällä säilytetään mahdollisimman suuri määrä työläislankoja, jotka käsittelevät mahdollisimman paljon pyyntöjä.

Serverlimit-tiedot

Vinkki:
MPM Event on vakaa Apache 2:ssa.4, vanhemmat versiot voivat käyttää MPM Workeriä vaihtoehtona.

Muut MPM:t

Valikoimassa on joukko muita MPM:iä. Nämä ovat tyypillisesti osa Apachen integrointia muihin käyttöjärjestelmiin kuin Unix-pohjaisiin järjestelmiin. Näillä on erityisiä MPM:iä, jotka ovat vaatimuksia tai Apachen hyödyntämistä vastaavissa järjestelmätyypeissä. Tällaiset MPM:t eivät kuulu tämän artikkelin aihepiiriin. Löydät lisätietoja tietyistä MPM:istä Apachen virallisen dokumentaation MPM Defaults -osiosta.

Huomautus:
Suosittelemme pysymään erossa kokeellisista ja epävakaista MPM:istä. Tällaisten ohjelmistojen epäluotettavuus tekee niistä tukikelvottomia.

Mikä MPM on paras?

Optimointia harkittaessa on olennaista ymmärtää, että ei ole olemassa yhtä ainoaa Apache-kokoonpanoa, joka sopii kaikille. MPM:n oikea valinta edellyttää monien liikkuvien muuttujien, kuten liikenteen, sivuston koodin, palvelintyypin, PHP-käsittelijän ja käytettävissä olevan laitteiston analysointia. Jokainen palvelin on ainutlaatuinen, joten paras MPM on täysin subjektiivinen valinta.

Jos sovelluskoodisi ei tue monisäikeistystä, valintasi on väistämättä MPM Prefork puhtaasti yhteensopivuuden perusteella. MPM Prefork sisältää ohjelmistomoduuleja kuten mod_php (DSO). MPM Worker ilman KeepAlivea toimii erittäin hyvin, jos sovelluksesi on suorituskykyinen kuormitustasapainotettu API-järjestelmä. MPM Eventin skaalautuvuus ja joustavuus on vankka valinta useiden pienten ja keskisuurten sivustojen isännöintiin jaetussa isännöintikokoonpanossa.

Useimmat yksinkertaiset palvelinasetukset toimivat hyvin MPM Eventin itseohjautuvalla oletuskokoonpanolla, mikä tekee siitä ihanteellisen lähtökohdan optimointiviritykselle. Kun MPM on valittu, voidaan siirtyä Configuration Directives -asetuksiin ja tarkastella, mitkä asetukset koskevat palvelimen suorituskykyä ja optimointia. Tai tutustu tämän sarjan edelliseen artikkeliin, Apachen suorituskyvyn virittäminen: Swap Memory.

Sarjan navigointi << Edellinen artikkeliSeuraava artikkeli >>

Jätä kommentti