Mange bruger apache2 som webserver. Men få tænker på at optimere dens ydeevne, hvilket direkte påvirker læsehastigheden på webstedernes sider, hastigheden af scriptbehandling (især PHP) samt øger belastningen på CPU'en og mængden af RAM, der bliver anvendt.
Dermed skal denne manual hjælpe begyndere (og ikke kun) brugere.
Alle nedenstående eksempler blev brugt på Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Lad os komme i gang.
1. Deaktivering af ubrugte moduler
Den første metode er blot at deaktivere de moduler, du ikke bruger:
Listen over aktuelt anvendte moduler kan ses med kommandoen:
apache2ctl -MFor at deaktivere et modul bruges kommandoen:
a2dismod *modulnavn*Tilsvarende bruges kommandoen til at aktivere et modul:
a2enmod *modulnavn*Bemærk, at når du bruger a2dismod, skal modulnavnet skrives uden ordet modul.
For eksempel, hvis du i outputtet af kommandoen apache2ctl -M ser proxy_module, så kræves det, at du bruger kommandoen — a2dismod proxy
De mest systembelastende moduler (efter personlig erfaring) er:
- PHP, Ruby, Perl og andre moduler for forskellige scriptsprog
- SSL
- Rewrite
- CGI
Så i de tilfælde, hvor du ikke behøver disse moduler, anbefaler jeg at deaktivere dem.
Derudover, efter at have deaktiveret et modul, anbefaler jeg at bruge kommandoen — apache2ctl configtest, som tjekker konfigurationen af de anvendte websteder, og hvis noget af de deaktiverede moduler var nødvendige for dem, vil den give en fejl.
2. Skift MPM (Multi-Processing Module) og brug php-fpm
Som standard, efter installation, bruger apache2 MPM Prefork (1 tråd pr. forbindelse), hvilket mærkbart sænker ydeevnen, men forbedrer stabilitet og sikkerhed.
Men for at optimere ydeevnen anbefaler jeg at bruge MPM Worker, som tillader flere tråde pr. forbindelse.
For at aktivere det, bruger vi følgende kommandoer:
a2dismod mpm_prefork // Deaktiverer prefork
a2dismod php7.3 // Deaktiverer php-modulet, der er afhængigt af prefork
a2enmod mpm_worker // Aktiverer worker
Men ved brug af Worker kan du støde på et problem, da modulet php7.3 er afhængigt af modulet Prefork.
For at løse dette problem vil vi installere modulet php7.3-fpm, som vil blive anvendt til behandling af php-scripts:
apt-get update && apt-get install php7.3-fpm // Installerer
systemctl enable php7.3-fpm && systemctl start php7.3-fpm // Tilføjer til automatiske opstart og starter det
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf // Aktiverer modulet og konfigurationen for det
Det er værd at bemærke, at brugen af php-fpm også vil reducere mængden af anvendt RAM af apache2-processen og lidt øge hastigheden på behandlingen af php-scripts.
3. Konklusion
Dermed har vi med disse simple trin været i stand til at optimere ydelsen og reducere belastningen på maskinen (i dette tilfælde RPI3).
Selvfølgelig er der hundrede andre optimeringsmuligheder, såsom at aktivere komprimering (som virkelig er nyttig, men for det meste allerede er aktiveret som standard), ændring af parametre (konfigurationsfiler) for MPM, deaktivering af HostnameLookups osv., men i denne artikel har jeg forsøgt at fremhæve de punkter, der har hjulpet mig mest, og jeg håber, at de kan hjælpe andre.
Kilde: habr.com
