Apache Prestatie tuning: MPM Modules

  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

Leestijd: 3 minuten

De hoeksteen voor het begrijpen van Apache server performance zijn veruit de Multiprocessing Modules (MPMs). Deze modules bepalen de basis voor hoe Apache omgaat met multiprocessing. Multiprocessing betekent het gelijktijdig uitvoeren van meerdere bewerkingen in een systeem met meerdere centrale verwerkingseenheden (CPU Cores).

Er zijn vele MPM’s om uit te kiezen; dit artikel richt zich echter op de meest gebruikte modules die in Liquid Web Linux gebaseerde VPS-servers te vinden zijn. Deze modules zijn:

  • PM Prefork
  • MPM Worker
  • MPM Event
  • Andere MPMs
  • Welke MPM is de beste?

MPM Prefork

Het zelfregulerende MPM Prefork ontleent zijn naam aan de manier waarop het zichzelf preëmptief forkt of kopieert in nieuwe identieke processen om te wachten op binnenkomende verzoeken. Een niet-threaded proces-gebaseerde benadering van multiprocessing, MPM Prefork draait Apache in een enkel master ouder server proces. Deze ouder is verantwoordelijk voor het beheer van alle additionele kinderservers die deel uitmaken van zijn serverpool. Tijdens het gebruik van MPM Prefork handelt elke kinderserver slechts een enkel verzoek af. Deze focus biedt volledige isolatie van andere aanvragen die op de server worden afgehandeld. MPM Prefork wordt typisch gebruikt voor compatibiliteit wanneer niet-threaded libraries/software, zoals mod_php (DSO), nodig zijn. Vanuit een optimalisatiestandpunt kan MPM Prefork ernstig tekortschieten in vergelijking met multi-threaded oplossingen, omdat het veel meer bronnen nodig heeft om vergelijkbare verkeersniveaus als een threaded MPM te bereiken. Er zijn veel meer resources nodig om een vergelijkbaar verkeersniveau te bereiken als met een MPM met threads. Er worden veel resources gebruikt omdat voor elk verzoek volledige kopieën van Apache moeten worden gemaakt.

Note:
Gebruik MPM Prefork zo min mogelijk. Het onvermogen om goed te schalen met toenemend verkeer zal de beschikbare hardware op de meeste systeemconfiguraties snel te boven gaan.

PM Worker

Een hybride pre-forking, multi threaded, multiprocessing webserver. Op dezelfde manier als MPM Prefork, gebruikt MPM Worker dezelfde aanpak met een enkel master ouder proces dat alle kinderen binnen zijn server pool aanstuurt. Echter, in tegenstelling tot MPM Prefork, zijn deze kinderen multi-threaded processen die tientallen threads (verzoeken) tegelijk kunnen afhandelen. MPM Worker heeft de basis gelegd voor multi-threaded multiprocessing in Apache servers, die stabiel werd in Apache 2.2. De configuratie met threads stelt Apache in staat om honderden verzoeken met gemak af te handelen terwijl er maar een tiental kindprocessen in het geheugen blijven. De MPM Worker biedt een oplossing voor webdiensten met zowel een hoge capaciteit als weinig bronnen.

Note
De KeepAliveTimeOut-richtlijn bepaalt momenteel de hoeveelheid tijd die Apache op aanvragen wacht. Gebruik bij gebruik van KeepAlive met MPM Worker de kleinst mogelijke KeepAliveTimeout (bij voorkeur 1 seconde).

MPM Event

Gebaseerd op de MPM Worker broncode, deelt MPM Event configuratie-richtlijnen met MPM Worker. Het werkt bijna identiek aan MPM Worker, behalve als het gaat om het afhandelen van KeepAlive verzoeken. MPM Event gebruikt een toegewijde Listener thread in elk child process. Deze Listening thread is verantwoordelijk voor het doorsturen van inkomende verzoeken naar een beschikbare worker thread. De Listening thread lost het probleem op van MPM Worker die hele threads blokkeert in het wachten op de KeepAliveTimeout. De Listener benadering van MPM Event zorgt ervoor dat worker threads niet “vastzitten” wachtend op het verstrijken van de KeepAliveTimeout. Deze methode zorgt ervoor dat het maximale aantal worker-threads zoveel mogelijk verzoeken afhandelt.

Serverlimietinformatie

Tip:
MpM Event is stabiel in Apache 2.4, oudere versies kunnen MPM Worker als alternatief gebruiken.

Andere MPM’s

Er is een assortiment van extra MPM’s beschikbaar. Deze maken meestal deel uit van de integratie van Apache in andere besturingssystemen dan Unix-systemen. Deze hebben specifieke MPM’s die vereisten zijn of gebruik maken van Apache op hun respectievelijke systeemtypen. Deze soorten MPM’s vallen buiten het bestek van dit artikel. Meer informatie over specifieke MPM’s kunt u vinden in het gedeelte MPM Defaults van de officiële Apache Documentatie.

Note:
Wij raden aan geen gebruik te maken van experimentele en onstabiele MPM’s. De onbetrouwbaarheid van dit soort software maakt ze niet ondersteunbaar.

Welke MPM is de beste?

Bij het overwegen van optimalisatie is het essentieel om te begrijpen dat er niet zoiets is als een standaard Apache-configuratie. Het correct kiezen van een MPM vereist analyse van vele bewegende variabelen zoals verkeer, site code, server type, PHP Handler en beschikbare hardware. Elke server is uniek, waardoor de beste MPM een geheel subjectieve keuze is.

Als uw applicatiecode geen multi-threading ondersteunt, dan zal uw keuze onvermijdelijk vallen op MPM Prefork, puur op basis van compatibiliteit. MPM Prefork bevat software modules zoals mod_php (DSO). MPM Worker zonder KeepAlive presteert zeer goed als uw toepassing een high-performance load balanced API systeem is. De schaalbaarheid en flexibiliteit van MPM Event is een solide keuze voor het hosten van meerdere kleine tot middelgrote sites in een gedeelde hosting configuratie.

De meeste eenvoudige server setups werken goed onder de zelfsturende standaard configuratie van MPM Event, waardoor het een ideaal startpunt is voor optimalisatie tuning. Eenmaal gekozen, kan een MPM vervolgens verder gaan met Configuratie Richtlijnen om te bekijken welke instellingen betrekking hebben op server prestaties en optimalisatie. Of bekijk ons vorige artikel in deze serie, Apache Performance Tuning: Swap Memory.

Serie navigatie << Vorig artikelVolgende artikel >>

Plaats een reactie