Optimalisatie van de prestaties van apache2

Veel mensen gebruiken apache2 als webserver. Echter, weinig mensen denken na over het optimaliseren van de prestaties, wat een directe invloed heeft op de laadtijd van webpagina's, de verwerkingssnelheid van scripts (met name PHP), en leidt tot een hogere belasting van de CPU en een toename van het gebruikte RAM.

Daarom zou de volgende handleiding beginnende (en niet alleen) gebruikers moeten helpen.
Alle onderstaande voorbeelden zijn gebruikt op een Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Laten we beginnen.

1. Uitschakelen van ongebruikte modules

De eerste methode is eenvoudigweg ongebruikte modules uit te schakelen:

Een lijst van momenteel gebruikte modules kan worden bekeken met het commando:

apache2ctl -M

Om een module uit te schakelen, gebruik je het commando:

a2dismod *module naam*

Om een module weer in te schakelen, gebruik je het commando:

a2enmod *module naam*

Let op dat bij het gebruik van a2dismod, de module naam zonder het woord module moet worden geschreven.

Bijvoorbeeld, als je in de uitvoer van het commando apache2ctl -M de naam proxy_module, hebt gezien, moet je het volgende commando gebruiken om het uit te schakelen — a2dismod proxy

De meest systeembelastende modules (uit persoonlijke ervaring) zijn:

  • PHP, Ruby, Perl en andere modules voor verschillende scripttalen
  • SSL
  • Rewrite
  • CGI

Dus in die gevallen waarin je deze modules niet nodig hebt, raad ik aan deze modules uit te schakelen.

Daarnaast raad ik na het uitschakelen van een module aan om het commando — apache2ctl configtest, te gebruiken, wat de configuratie van de gebruikte sites controleert en als een van de uitgeschakelde modules daarvoor nodig was, een foutmelding geeft.

2. Wijziging van MPM (Multi-Processing Module) en gebruik van php-fpm

Standaard gebruikt apache2 na installatie MPM Prefork (1 draad per verbinding), wat de prestaties aanzienlijk verlaagt, maar tegelijkertijd stabiliteit en veiligheid verbetert.

Maar voor prestatieoptimalisatie raad ik aan om MPM Worker te gebruiken, dat meerdere threads per verbinding mogelijk maakt.

Om het in te schakelen, gebruiken we de volgende commando's:

a2dismod mpm_prefork  \/\/ Uitschakelen van prefork
a2dismod php7.3  \/\/ Uitschakelen van de PHP-module die afhankelijk is van prefork
a2enmod mpm_worker  \/\/ Inschakelen van worker

Echter, bij het gebruik van Worker kun je tegen een probleem aanlopen, omdat de module php7.3 afhankelijk is van de module Prefork.

Om dit probleem op te lossen, installeren we de php7.3-fpm-module, die zal worden gebruikt voor het uitvoeren van php-scripts:

apt-get update && apt-get install php7.3-fpm  //Installeren
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Toevoegen aan autostart en starten
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Module en configuratie inschakelen

Het is de moeite waard op te merken dat het gebruik van php-fpm ook het geheugenverbruik door het apache2-proces vermindert en de uitvoering van php-scripts iets versnelt.

3. Conclusie

Zo hebben we met deze eenvoudige acties de prestaties geoptimaliseerd en de belasting op de machine (in dit geval RPI3) verlaagd.

Natuurlijk zijn er honderden andere optimalisatie-opties, zoals het inschakelen van compressie (wat echt nuttig is, maar meestal al standaard is ingeschakeld), het wijzigen van parameters (configuratiebestanden) van MPM, het uitschakelen van HostnameLookups, enz., maar in dit artikel heb ik geprobeerd om juist die punten weer te geven die mij het meest hebben geholpen, en ik hoop dat ze ook anderen kunnen helpen.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster