Viele nutzen apache2 als Webserver. Allerdings denken nur wenige an die Optimierung seiner Leistung, was sich direkt auf die Ladegeschwindigkeit der Webseiten, die Ausführungsgeschwindigkeit von Skripten (insbesondere PHP) sowie auf die CPU-Last und den RAM-Verbrauch auswirkt.
Der folgende Leitfaden sollte sowohl Anfängern als auch anderen Nutzern helfen.
Alle folgenden Beispiele wurden auf einem Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3 verwendet.
Lass uns also anfangen.
1. Deaktivierung nicht verwendeter Module
Die erste Methode besteht darin, einfach die Module zu deaktivieren, die Sie nicht verwenden:
Die Liste der derzeit verwendeten Module kann mit dem Befehl angesehen werden:
apache2ctl -MUm ein Modul zu deaktivieren, verwenden Sie den Befehl:
a2dismod *Modulname*Entsprechend wird zur Aktivierung eines Moduls der Befehl verwendet:
a2enmod *Modulname*Bitte beachten Sie, dass bei der Verwendung von a2dismod, der Modulname ohne das Wort 'Modul' geschrieben werden muss.
Wenn Sie beispielsweise im Ausgabetext des Befehls apache2ctl -M gesehen haben, dass proxy_module, müssen Sie zum Deaktivieren den Befehl verwenden — a2dismod proxy
Die ressourcenintensivsten Module (aus persönlicher Erfahrung) sind:
- PHP, Ruby, Perl und andere Module für verschiedene Skriptsprache
- SSL
- Rewrite
- CGI
Daher empfehle ich, diese Module zu deaktivieren, wenn Sie sie nicht benötigen.
Außerdem empfehle ich nach der Deaktivierung eines Moduls, den Befehl — apache2ctl configtest, der die Konfiguration der verwendeten Seiten überprüft und eine Fehlermeldung ausgibt, falls eines der deaktivierten Module benötigt wurde.
2. Wechsel zu MPM (Multi-Processing Module) und Verwendung von php-fpm
Standardmäßig verwendet apache2 nach der Installation MPM Prefork (1 Thread pro Verbindung), was die Leistung deutlich verringert, jedoch die Stabilität und Sicherheit verbessert.
Für eine Optimierung der Leistung empfehle ich, MPM Worker zu verwenden, das mehrere Threads für eine Verbindung nutzen kann.
Um es zu aktivieren, verwenden Sie die folgenden Befehle:
a2dismod mpm_prefork \/\/ Deaktivieren des Prefork
a2dismod php7.3 \/\/ Deaktivieren des php-Moduls, das von Prefork abhängt
a2enmod mpm_worker \/\/ Aktivieren des Workers
Wenn Sie Worker verwenden, können Sie jedoch auf ein Problem stoßen, da das php7.3-Modul vom Prefork-Modul abhängt.
Um dieses Problem zu lösen, installieren wir das Modul php7.3-fpm, das zur Ausführung von PHP-Skripten verwendet wird:
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
Es ist anzumerken, dass die Verwendung von php-fpm auch den Speicherbedarf des Apache2-Prozesses reduziert und die Ausführung von PHP-Skripten etwas beschleunigt.
3. Fazit
So konnten wir durch diese einfachen Schritte die Leistung optimieren und die Belastung der Maschine (in diesem Fall RPI3) verringern.
Natürlich gibt es hunderte weiterer Optimierungsansätze, wie das Aktivieren von Komprimierung (was tatsächlich nützlich ist, aber größtenteils standardmäßig aktiviert ist), Anpassungen an den MPM-Konfigurationsparametern, das Deaktivieren von HostnameLookups usw. In diesem Artikel habe ich jedoch versucht, die Punkte hervorzuheben, die mir am meisten geholfen haben, in der Hoffnung, dass sie auch anderen hilfreich sind.
Quelle: habr.com
