Optimera din Apache-server för bättre prestanda

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.