Apache MPMs Explained

Apache-webserveren er den mest populære webserver i verden. Dette skyldes til dels dens modulære design. Apache 2 introducerede Multi-Processing Modules, eller MPM’er. MPM’erne ændrer webserverens grundlæggende funktionalitet. Det gør de ved at ændre den måde, hvorpå Apache lytter til netværket, accepterer og håndterer anmodninger. En stor del af denne funktionalitet er ret teknisk og ligger uden for rammerne af denne artikel. Denne artikel vil kort forklare, hvad de forskellige MPM’er er, og hvordan de fungerer. Du kan finde mere detaljerede oplysninger om de forskellige MPM’er i Apache-dokumentationen.

Indledning

Alle versioner af Apache 2.0 og højere kører en eller anden form for MPM, og der findes en række forskellige MPM’er til de forskellige styresystemer. Denne artikel vil kun fokusere på dem, der er tilgængelige for Linux-operativsystemet. Først skal du afgøre, hvilken version af Apache og hvilken MPM din server kører i øjeblikket. Du kan bestemme dette ved at køre følgende kommando på kommandolinjen:

httpd -V | grep -i 'version\|mpm'

Kørslen af denne kommando vil give dig et output, der vil se således ud:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

I dette tilfælde kører serveren Apache 2.4 og bruger Event MPM. Dette output kan være anderledes afhængigt af den Apache-version og MPM, som din server kører i øjeblikket.

Det er nemt at ændre din MPM på en cPanel-server. Du skal blot køre EasyApache-scriptet og vælge den MPM, du ønsker, blandt de tilgængelige. Listen, der er til stede, vil være forskellig, afhængigt af om du kører Apache 2.0, Apache 2.2 eller Apache 2.4. På Apache-versioner under 2.4 er det kun Prefork og Worker, der betragtes som stabile. Event MPM betragtes som eksperimentel på Apache 2.2 og bør kun bruges med Apache 2.4 eller nyere.

Hvis du ikke selv er tryg ved at køre EasyApache, bedes du kontakte Heroic Support®, og vi vil med glæde hjælpe dig.

Prefork

Med Prefork-modulet installeret er Apache en ikke-trådet, pre-forking webserver. Det betyder, at hver Apache-underproces indeholder en enkelt tråd og håndterer én forespørgsel ad gangen. På grund af dette bruger den flere ressourcer end de trådede MPM’er: Worker og Event.

Prefork er standard MPM, så hvis der ikke er valgt nogen MPM i EasyApache, vil Prefork blive valgt. Det er stadig det bedste valg, hvis Apache skal bruge ikke-trådsikre biblioteker såsom mod_php (DSO), og det er ideelt, hvis isolering af processer er vigtig.

Worker

Den Worker MPM gør Apache til en multiproces- og multitrådet webserver. I modsætning til Prefork kan hver underproces under Worker have flere tråde. Worker kan således håndtere flere anmodninger med færre ressourcer end Prefork. Worker anbefales generelt til servere med stor trafik, der kører Apache-versioner før 2.4. Worker er dog inkompatibel med biblioteker, der ikke er sikre for tråde. Hvis du har brug for at køre noget, der ikke er trådsikkert, skal du holde dig til Prefork.

Event

Hver proces under Event kan også indeholde flere tråde, men i modsætning til Worker er hver proces i stand til at udføre mere end én opgave. Apache har de laveste ressourcekrav, når den bruges med Event MPM.

Event understøttes dog kun på servere, der kører Apache 2.4. Under Apache 2.2 betragtes Event som eksperimentel og er inkompatibel med nogle moduler på ældre versioner af Apache. Ikke desto mindre kan det på Apache 2.2-servere med stor trafik, hvor Apache har haft problemer med hukommelsen, give betydelige resultater at opgradere Apache til at drage fordel af Event MPM’en.

De andre MPM’er

Der findes en række andre eksperimentelle MPM’er såsom Threadpool, Perchild og Leader. Liquid Web anbefaler, at disse MPM’er ikke køres. Da de er eksperimentelle, er der ingen garantier for, at de vil fungere som forventet, og vi kan hverken understøtte dem eller garantere, at vi vil være i stand til at rette dem.

Med tilføjelsen af Multi Process Modules til Apache har Apache fået øget sin kraft og fleksibilitet. MPM’erne giver brugerne mulighed for at ændre kerneadfærden. Dette øger, hvad en bruger kan gøre med Apache uden at skulle installere yderligere software. Hvis du har spørgsmål vedrørende dette eller noget andet, bedes du ringe til Heroic Support®.