Mange mennesker bruger apache2 som en webserver. Men de færreste tænker på at optimere dens ydeevne, hvilket direkte proportionalt påvirker indlæsningshastigheden af webstedssider, hastigheden på behandling af scripts (især php), samt en stigning i CPU-belastning og en stigning i mængden af brugt RAM.
Følgende manual skulle derfor hjælpe begyndere (og ikke kun) brugere.
Alle eksempler nedenfor blev brugt på Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Så lad os komme i gang.
1. Deaktivering af ubrugte moduler
Den første metode er simpelthen at deaktivere moduler, som du ikke bruger:
Listen over aktuelt brugte moduler kan ses med kommandoen:
apache2ctl -M
For at deaktivere modulet, brug kommandoen:
a2dismod *название модуля*
Brug derfor kommandoen for at aktivere modulet:
a2enmod *название модуля*
Bemærk venligst, at ved brug a2dismod, skal modulets navn skrives uden selve ordmodulet.
For eksempel, hvis du er i udgangen af kommandoen apache2ctl -M så proxy_modul, så for at deaktivere det skal du bruge kommandoen - a2dismod proxy
De moduler, der belaster systemet mest (af personlig erfaring) er:
- PHP, Ruby, Perl og andre moduler til forskellige scriptsprog
- SSL
- Omskriv
- CGI
Så i tilfælde hvor du ikke har brug for disse moduler, anbefaler jeg at deaktivere disse moduler.
Efter at have deaktiveret ethvert modul, anbefaler jeg også at bruge kommandoen - apache2ctl configtest, som vil kontrollere konfigurationen af de anvendte websteder, og hvis nogle af de deaktiverede moduler var nødvendige for dem, vil det generere en fejl.
2. Ændring af MPM (Multi-Processing Module) og brug af php-fpm
Som standard, efter installation, bruger apache2 MPM Prefork (1 tråd pr. 1 forbindelse), hvilket reducerer ydeevnen betydeligt, men samtidig forbedrer stabiliteten og sikkerheden.
Men for at optimere ydeevnen anbefaler jeg at bruge MPM Worker, som giver dig mulighed for at bruge flere tråde pr. forbindelse.
For at aktivere det bruger vi følgende kommandoer:
a2dismod mpm_prefork //Отключаем prefork
a2dismod php7.3 //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker //Включаем worker
Men når du bruger Worker, kan du støde på et problem, fordi... php7.3-modulet afhænger af Prefork-modulet.
For at løse dette problem, lad os installere php7.3-fpm-modulet, som vil blive brugt til at køre PHP-scripts:
apt-get update && apt-get install php7.3-fpm //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf //Включаем модуль и конфиг для него
Det er værd at bemærke, at brug af php-fpm også vil reducere mængden af RAM, der bruges af apache2-processen og fremskynde behandlingen af PHP-scripts en smule.
3. Konklusion
Med så enkle handlinger var vi således i stand til at optimere ydeevnen og reducere belastningen på maskinen (i dette tilfælde RPI3).
Selvfølgelig er der hundredvis af andre optimeringsmuligheder, som at aktivere komprimering (hvilket er virkelig nyttigt, men de fleste er allerede aktiveret som standard), at ændre MPM-indstillinger (konfigurationsfiler), deaktivere HostnameLookups osv., men i denne artikel forsøgte jeg at reflektere Dette er de punkter, der hjalp mig mest, og jeg håber, at de vil hjælpe andre.
Kilde: www.habr.com