Apache Performance Tuning: MPM-moduler

  1. Apache Performance Tuning: Udskiftningshukommelse
  2. Apache-præstationsjustering: MPM-moduler
  3. Apache-præstationsjustering: MPM-direktiver
  4. Apache-performancetuning: Sådan aktiverer du Piped Logging i Apache

Læsetid: 3 minutter

Nøglen til at forstå Apache-serverens ydeevne er langt hen ad vejen Multiprocessing Modules (MPM’er). Disse moduler bestemmer grundlaget for, hvordan Apache håndterer multiprocessing. Multiprocessing betyder at køre flere operationer samtidigt i et system med flere centrale processorenheder (CPU-kerner).

Der er mange MPM’er at vælge imellem; denne artikel fokuserer dog på de mest almindeligt anvendte moduler, der findes i Liquid Web Linux-baserede VPS-servere. Disse moduler er:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Other MPMs
  • Hvilken MPM er den bedste?

MPM Prefork

Den selvregulerende MPM Prefork har sit navnebror fra den måde, hvorpå den forker eller kopierer sig selv i nye identiske processer præemptivt for at vente på indkommende anmodninger. MPM Prefork er en procesbaseret tilgang til multiprocessing uden tråde, og MPM Prefork kører Apache i en enkelt overordnet overordnet serverproces. Denne overordnede proces er ansvarlig for at styre alle yderligere underordnede servere, der udgør dens serverpool. Når MPM Prefork anvendes, håndterer hver underserver kun en enkelt anmodning. Dette fokus giver fuldstændig isolation fra andre anmodninger, der behandles på serveren. MPM Prefork anvendes typisk af kompatibilitetshensyn, når der kræves ikke-trådede biblioteker/software, som f.eks. mod_php (DSO). Ud fra et optimeringssynspunkt kan MPM Prefork være meget mangelfuld i forhold til flertrådede løsninger, idet den kræver langt flere ressourcer for at nå samme trafikniveau som en MPM med tråde. Den er ressourcekrævende på grund af dens behov for at afføde hele kopier af Apache for hver anmodning.

Note:
Undgå at bruge MPM Prefork så vidt muligt. Dens manglende evne til at skalere godt med øget trafik vil hurtigt overgå den tilgængelige hardware på de fleste systemkonfigurationer.

MPM Worker

En hybrid pre-forking, multitrådet, multiprocessing webserver. På samme måde som MPM Prefork anvender MPM Worker den samme fremgangsmåde med en enkelt master-moderproces, der styrer alle børn i sin serverpulje. I modsætning til MPM Prefork er disse børn imidlertid flertrådede processer, der kan håndtere snesevis af tråde (anmodninger) samtidig. MPM Worker har lagt grunden til multithread multiprocessing i Apache-servere, som blev stabil i Apache 2.2. Den trådede konfiguration gør det muligt for Apache at behandle hundredvis af forespørgsler uden problemer, mens der kun er et dusin børneprocesser i hukommelsen. MPM Worker gør både til en løsning med høj kapacitet og lave ressourcer til webservice.

Note
Direktivet KeepAliveTimeOut definerer i øjeblikket den tid, som Apache vil vente på anmodninger. Når KeepAlive anvendes sammen med MPM Worker, skal du bruge den mindst mulige KeepAliveTimeout (helst 1 sekund).

MPM Event

MPM Event er baseret på kildekoden for MPM Worker og deler konfigurationsdirektiver med MPM Worker. Den fungerer næsten identisk med MPM Worker, undtagen når det drejer sig om håndtering af KeepAlive-forespørgsler. MPM Event bruger en dedikeret Listener-tråd i hver underliggende proces. Denne Listening-tråd er ansvarlig for at lede indgående anmodninger til en tilgængelig arbejdstråd. Listening-tråden løser problemet med MPM Worker, som låser hele tråde til at vente på KeepAliveTimeout. Listener-tilgangen i MPM Event sikrer, at arbejdstråde ikke “sidder fast” og venter på, at KeepAliveTimeout udløber. Denne metode holder det maksimale antal arbejdertråde, der håndterer så mange anmodninger som muligt.

Serverlimitoplysninger

Tip:
MPM Event er stabil i Apache 2.4, ældre versioner kan bruge MPM Worker som et alternativ.

Andre MPM’er

Der er et udvalg af yderligere MPM’er til rådighed. Disse er typisk en del af Apaches integration i andre styresystemer end Unix-baserede systemer. Disse har specifikke MPM’er, som er nødvendige for at anvende Apache på deres respektive systemtyper. Disse typer af MPM’er er ikke omfattet af denne artikel. Du kan finde flere oplysninger om specifikke MPM’er i afsnittet MPM Defaults i den officielle Apache-dokumentation.

Note:
Vi anbefaler, at du holder dig fra eksperimentelle og ustabile MPM’er. Den upålidelige karakter af disse typer software gør dem uacceptable.

Hvilken MPM er den bedste?

Når man overvejer optimering, er det vigtigt at forstå, at der ikke findes en Apache-konfiguration, der passer til alle. Korrekt valg af en MPM kræver analyse af mange bevægelige variabler som trafik, webstedskode, servertype, PHP Handler og tilgængelig hardware. Hver server er unik, hvilket gør den bedste MPM til et helt subjektivt valg.

Hvis din programkode ikke understøtter multi-threading, vil dit valg uundgåeligt være MPM Prefork udelukkende på et kompatibilitetsgrundlag. MPM Prefork omfatter softwaremoduler som mod_php (DSO). MPM Worker uden KeepAlive klarer sig meget godt, hvis din applikation er et højtydende lastbalanceret API-system. MPM Event’s skalerbarhed og fleksibilitet er et solidt valg til hosting af flere små til mellemstore websteder i en delt hostingkonfiguration.

De fleste enkle serveropsætninger fungerer godt under den selvstyrende standardkonfiguration af MPM Event, hvilket gør det til et ideelt udgangspunkt for optimeringstuning. Når den er valgt, kan en MPM derefter gå videre til konfigurationsdirektiverne for at gennemgå, hvilke indstillinger der vedrører serverens ydeevne og optimering. Du kan også læse vores tidligere artikel i denne serie, Apache Performance Tuning: Swap Memory.

Navigation i serien << Forrige artikelNæste artikelNæste artikel >>

Skriv en kommentar