Viele verwenden apache2 als Webserver. Doch nur wenige Gedanken machen sich über die Optimierung seiner Leistung, was direkt die Ladegeschwindigkeit der Webseiten, die Scriptverarbeitung (insbesondere PHP) sowie die CPU-Auslastung und den Speicherbedarf beeinflusst.
Daher sollte das folgende Handbuch Anfängern (und nicht nur) helfen.
Alle nachfolgenden Beispiele wurden auf Raspberry PI 3, Debian 9, Apache 2.4.38 und PHP 7.3 verwendet.
Fangen wir also an.
1. Deaktivierung ungenutzter 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 eingesehen werden:
apache2ctl -MZur Deaktivierung eines Moduls verwenden Sie den folgenden Befehl:
a2dismod *Modulname*Entsprechend wird zur Aktivierung eines Moduls der folgende Befehl verwendet:
a2enmod *Modulname*Bitte beachten Sie, dass bei der Verwendung von a2dismod, der Modulname ohne das Wort Modul angegeben werden muss.
Beispielsweise, wenn Sie in der Ausgabe des Befehls apache2ctl -M gesehen haben proxy_module, dann müssen Sie zur Deaktivierung den Befehl verwenden — a2dismod proxy
Die Module, die das System am stärksten belasten (aus eigener Erfahrung), sind:
- PHP, Ruby, Perl und andere Module für verschiedene Skriptsprache
- SSL
- Rewrite
- CGI
In Fällen, in denen Sie diese Module nicht benötigen, empfehle ich, diese Module zu deaktivieren.
Außerdem empfehle ich nach der Deaktivierung eines Moduls den Befehl — apache2ctl configtest, der die Konfiguration der verwendeten Webseiten überprüft und eine Fehlermeldung ausgibt, wenn eines der deaktivierten Module benötigt wird.
2. Wechsel des 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 erheblich verringert, aber Stabilität und Sicherheit verbessert.
Für die Leistungsoptimierung empfehle ich jedoch die Verwendung von MPM Worker, das es ermöglicht, mehrere Threads für eine Verbindung zu nutzen.
Um es zu aktivieren, verwenden wir die folgenden Befehle:
a2dismod mpm_prefork \/\/ Deaktivieren Sie prefork
a2dismod php7.3 \/\/ Deaktivieren Sie das PHP-Modul, das von prefork abhängt
a2enmod mpm_worker \/\/ Aktivieren Sie Worker
Bei Verwendung von Worker können Sie jedoch auf ein Problem stoßen, da das Modul php7.3 von dem Modul Prefork abhängt.
Um das Problem zu lösen, installieren wir das Modul php7.3-fpm, das zur Verarbeitung von PHP-Skripten verwendet wird:
apt-get update && apt-get install php7.3-fpm //Installieren
systemctl enable php7.3-fpm && systemctl start php7.3-fpm //In den Autostart hinzufügen und starten
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf //Modul und Konfiguration aktivieren
Es ist zu beachten, dass die Verwendung von php-fpm auch den Speicherbedarf des apache2-Prozesses verringert und die Verarbeitung von PHP-Skripten etwas beschleunigt.
3. Fazit
Somit konnten wir durch diese einfachen Maßnahmen die Leistung optimieren und die Belastung des Systems (in diesem Fall RPI3) reduzieren.
Natürlich gibt es Hunderte anderer Optimierungsoptionen, wie z.B. die Aktivierung von Kompression (was wirklich nützlich ist, aber größtenteils standardmäßig aktiviert ist), die Anpassung der MPM-Parameter (Konfigurationsdateien), die Deaktivierung von HostnameLookups usw. In diesem Artikel habe ich jedoch versucht, genau die Punkte zu reflektieren, die mir am meisten geholfen haben, und ich hoffe, dass sie auch anderen helfen.
Quelle: habr.com
