Att använda Apache HTTP Server är ett populärt val för att driva webbplatser, men standardinställningarna är sällan optimerade för hög prestanda. Oavsett om du driver en mindre webbplats eller en tyngre applikation finns det flera konkreta sätt att förbättra hur snabbt och effektivt din Apache-server arbetar. Den här guiden går igenom några av de viktigaste metoderna för att optimera din Apache-installation.
Justera KeepAlive-inställningar
Apache använder KeepAlive för att hålla en anslutning öppen mellan klient och server under flera HTTP-förfrågningar. Detta minskar latens, men kan bli resurskrävande vid många samtidiga anslutningar.
- KeepAlive On – bör vara aktiverat om du har många återkommande förfrågningar från samma klienter.
- MaxKeepAliveRequests – sätt ett rimligt tak, t.ex. 100.
- KeepAliveTimeout – ett lågt värde som 2 eller 3 sekunder minskar risken för onödiga anslutningar.
Minska antalet laddade moduler
Apache laddar många moduler som kanske inte används. Att avaktivera onödiga moduler frigör resurser.
Exempel:
bash
a2dismod status
a2dismod autoindex
Se över vilka moduler som verkligen behövs för din applikation och inaktivera resten.
Använd rätt MPM (Multi-Processing Module)
Apache har tre olika MPM-alternativ: prefork, worker och event. Välj den som bäst passar din typ av trafik.
- prefork – standard för PHP via mod_php, men minst effektiv.
- worker – mer effektiv med trådar, passar icke-blockerande applikationer.
- event – bäst för många samtidiga, inaktiva anslutningar, t.ex. vid användning av KeepAlive.
För att aktivera t.ex. event:
bash
a2dismod mpm_prefork
a2enmod mpm_event
Aktivera komprimering med mod_deflate
Att aktivera Gzip-komprimering kan avsevärt minska sidstorlek och förbättra laddningstider.
apache
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
Utnyttja cache via mod_expires och mod_headers
Caching minskar belastningen på servern och förbättrar upplevelsen för användaren.
apache
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css ”access plus 1 week”
ExpiresByType application/javascript ”access plus 1 week”
</IfModule>
Begränsa åtkomst till .htaccess-filer
Om du inte behöver per-katalog-konfigurationer kan du stänga av AllowOverride och istället definiera inställningar i huvudkonfigurationsfilen. Detta förbättrar prestandan eftersom Apache inte behöver läsa .htaccess i varje katalog.
apache
<Directory /var/www/html>
AllowOverride None
</Directory>
Övervaka och optimera med loggfiler
Håll koll på access- och felloggar för att identifiera flaskhalsar och onödiga förfrågningar.
- AccessLog – vilka resurser som används mest?
- ErrorLog – finns det PHP-fel, 404:or eller andra fel som belastar servern?
Verktyg som GoAccess eller AWStats kan hjälpa till att analysera loggarna mer effektivt.
Överväg extern cache (t.ex. Varnish eller Redis)
Om du kör en resursintensiv applikation kan en extern cachemotor framför Apache göra stor skillnad. Varnish fungerar som en reverse proxy och hanterar ofta återkommande förfrågningar innan de ens når Apache.
Sammanfattning
Att optimera Apache handlar om att minska onödig belastning, förbättra svarstider och maximera resurserna. Genom att finjustera inställningar som KeepAlive, MPM, moduler, komprimering och cache kan du göra stora förbättringar utan att byta till ett helt nytt serversystem. Det är också viktigt att övervaka trafik och prestanda kontinuerligt, så att du kan agera proaktivt när behov uppstår.