Sådan aktiveres Apache MPM Prefork til at forbedre ydelsen

Apache-webserveren er en af de mest populære på kloden. Ud af kassen gør Apache et ret solidt arbejde med at håndtere gennemsnitlig trafik. Men når du først begynder at ramme den med en over gennemsnitlig belastning, under visse omstændigheder såsom ressourcekapacitet og kompleksitet af serverede websteder, kan du opleve, at det kæmper lidt. Hvis det beskriver, hvad du oplever, er MPM-præforkodulet (Multi-Processing Modules) muligvis i orden.
MPM Prefork-modulet bruger en enkelt kontrolproces, der er ansvarlig for at starte børneprocesser. Disse børneprocesser lytter til forbindelser og tjener dem, når de ankommer. MPM Prefork er selvregulerende, så medmindre du har brug for en meget større overhead, er der meget lidt grund til at justere dets standardkonfigurationer. Du skal dog aktivere dette modul, da det er deaktiveret ud af boksen.
Jeg vil vise dig, hvordan du aktiverer MPM Prefork-modulet på Apache. Jeg demonstrerer på Ubuntu Server 18.04.
Hvad du har brug for
De eneste ting, du har brug for for at aktivere dette modul, er:
- En kørende forekomst af Ubuntu Server 18.04
- Apache installeret og kører
- En bruger med sudo-privilegier
- En netværksforbindelse
Sådan aktiveres mpm_prefork
Mest sandsynligt er mpm_prefork-modulet allerede installeret på din Apache-forekomst. Uden for kassen er det dog ikke aktiveret.
Apache2 har support til både prefork og arbejder. Disse er begge MPM'er, men er meget forskellige fra hinanden. Preork-modulet opretter et antal underordnede processer ved lanceringen, hver underordnede proces håndterer kun en tråd. Omvendt bruger arbejdstager børneprocesser, der spawn mange tråde per proces, med hver tråd klar til at tage nye anmodninger. Selvom prefork kræver betydeligt mere RAM, er det det sikreste modul og bør anvendes, når du bruger ikke-tråd-sikre biblioteker.
For at kontrollere, om prefork-modulet er indlæst, skal du udstede kommandoen:
apache2ctl -M | grep prefork
Hvis du ikke ser nogen resultater, indlæses ikke prefork. Inden du indlæser det, skal du først fjerne mpm_event-modulet, da de kommer i konflikt. For at fjerne mpm_event skal du udstede kommandoen:
sudo a2dismod mpm_event
Genstart Apache med kommandoen:
sudo systemctl genstart apache2
Nu kan du indlæse mpm_prefork med kommandoen:
sudo a2enmod mpm_prefork
Genstart igen Apache med kommandoen:
sudo systemctl genstart apache2
Sådan konfigureres mpm_prefork
På den off-chance, at din webserver behøver en betydelig omkostning, kan du foretage justeringer af prefork-konfigurationen. For at gøre dette skal du udstede kommandoen:
sudo nano /etc/apache2/mods-available/mpm_prefork.conf
I denne fil ser du følgende indstillinger:
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0
Du ønsker måske at forhøje disse numre markant, hvis du ved, at din server kommer til at være under en større belastning (og du har RAM til overs), kan du ændre den konfiguration sådan:
StartServers 4 MinSpareServers 3 MaxSpareServers 40 MaxRequestWorkers 200 MaxTilslutningerPerChild 10000
Sørg for at redigere disse numre alt efter hvad din hardware kan håndtere, og den forventede belastning vil kræve. Gem og luk filen. Genstart Apache med kommandoen:
sudo systemctl genstart apache2
På dette tidspunkt er mpm_prefork aktiveret og konfigureret. Hvis du er interesseret i at teste dette ud, kan du køre et Perl-script. Vær forsigtig, når du gør det, da det er et Perl-script, og du bare aldrig ved. Faktisk vil du måske downloade scriptet og kamme det igennem først (for at kontrollere, om der er nogen ubehagelige kode).
Download scriptet med denne kommando:
wget https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl
Når du har kigget igennem det og fundet det pålideligt, skal du køre kommandoen:
sudo perl apache2buddy.pl
Når kommandoen er afsluttet, skal du se en rapport om Apaches hukommelsesforbrug ( figur A ).
Figur A
Post mpm_prefork configuration memory usage." data-credit="" rel="noopener noreferrer nofollow">
Send mpm_prefork-hukommelsesanvendelse.
Og der har du det. Apache mpm_prefork gør nu sine ting. Sørg for at justere din konfiguration, så den bedst opfylder dine miljøbehov, og dette modul tjener dig godt.