Apache MPMs Explained

Der Apache Webserver ist der beliebteste Webserver der Welt. Dies ist zum Teil auf seinen modularen Aufbau zurückzuführen. Mit Apache 2 wurden Multi-Processing-Module (MPMs) eingeführt. Die MPMs ändern die grundlegende Funktionalität des Webservers. Sie ändern die Art und Weise, wie der Apache das Netzwerk abhört, Anfragen annimmt und bearbeitet. Viele dieser Funktionen sind recht technisch und liegen außerhalb des Rahmens dieses Artikels. Dieser Artikel wird kurz erklären, was die verschiedenen MPMs sind und wie sie funktionieren. Fýr detailliertere Informationen zu den verschiedenen MPMs besuchen Sie bitte die Apache-Dokumentation.

Einfýhrung

Alle Versionen von Apache 2.0 und hýher verwenden eine Form von MPM, und es gibt eine Vielzahl von MPMs fýr die verschiedenen Betriebssysteme. Dieser Artikel wird sich nur auf die für das Linux-Betriebssystem verfügbaren MPMs konzentrieren. Zunächst müssen Sie feststellen, welche Apache-Version und welches MPM auf Ihrem Server installiert ist. Sie können dies ermitteln, indem Sie den folgenden Befehl in der Befehlszeile ausführen:

httpd -V | grep -i 'version\|mpm'

Die Ausführung dieses Befehls gibt Ihnen eine Ausgabe, die wie folgt aussieht:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

In diesem Fall läuft auf dem Server Apache 2.4 und es wird das Event MPM verwendet. Diese Ausgabe kann je nach Apache-Version und MPM, das auf Ihrem Server läuft, unterschiedlich sein.

Die Änderung des MPM auf einem cPanel-Server ist einfach. Führen Sie einfach das EasyApache-Skript aus und wählen Sie das gewünschte MPM aus der Liste der verfügbaren MPMs aus. Die Liste ist unterschiedlich, je nachdem, ob Sie Apache 2.0, Apache 2.2 oder Apache 2.4 verwenden. Bei Apache-Versionen unter 2.4 gelten nur Prefork und Worker als stabil. Das Event MPM wird bei Apache 2.2 als experimentell angesehen und sollte nur mit Apache 2.4 oder höher verwendet werden.

Wenn Sie EasyApache nicht selbst ausführen möchten, wenden Sie sich bitte an den Heroic Support®, der Ihnen gerne behilflich sein wird.

Prefork

Mit dem installierten Prefork-Modul ist Apache ein nicht-gethreadeter, pre-forking Webserver. Das bedeutet, dass jeder Apache-Kinderprozess einen einzigen Thread enthält und jeweils nur eine Anfrage bearbeitet. Aus diesem Grund verbraucht er mehr Ressourcen als die MPMs mit Threads: Worker und Event.

Prefork ist das Standard-MPM, d.h. wenn in EasyApache kein MPM ausgewählt ist, wird Prefork ausgewählt. Es ist immer noch die beste Wahl, wenn der Apache nicht-threadsichere Bibliotheken wie mod_php (DSO) verwenden muss, und ist ideal, wenn die Isolierung von Prozessen wichtig ist.

Worker

Das Worker MPM macht den Apache zu einem Multiprozess- und Multithreading-Webserver. Im Gegensatz zu Prefork kann jeder Kindprozess unter Worker mehrere Threads haben. Daher kann Worker mehr Anfragen mit weniger Ressourcen bearbeiten als Prefork. Worker wird im Allgemeinen für Server mit hohem Datenverkehr empfohlen, auf denen Apache-Versionen vor 2.4 laufen. Worker ist jedoch nicht mit nicht-threadsicheren Bibliotheken kompatibel. Wenn Sie etwas ausführen müssen, das nicht thread-sicher ist, müssen Sie bei Prefork bleiben.

Event

Jeder Prozess unter Event kann ebenfalls mehrere Threads enthalten, aber im Gegensatz zu Worker kann jeder mehr als eine Aufgabe ausführen. Apache hat die geringsten Ressourcenanforderungen, wenn es mit dem Event MPM verwendet wird.

Event wird allerdings nur auf Servern mit Apache 2.4 unterstützt. Unter Apache 2.2 gilt Event als experimentell und ist mit einigen Modulen älterer Apache-Versionen nicht kompatibel. Auf Apache 2.2-Servern mit hohem Datenverkehr, auf denen Apache Probleme mit dem Arbeitsspeicher hat, kann ein Upgrade von Apache, um die Vorteile des Event-MPMs zu nutzen, jedoch signifikante Ergebnisse liefern.

Die anderen MPMs

Es gibt eine Reihe anderer experimenteller MPMs wie Threadpool, Perchild und Leader. Liquid Web empfiehlt, diese MPMs nicht zu verwenden. Da sie experimentell sind, gibt es keine Garantie, dass sie wie erwartet funktionieren, und wir können sie weder unterstützen noch garantieren, dass wir in der Lage sein werden, sie zu reparieren.

Die Hinzufügung der Multiprozessmodule zum Apache hat dessen Leistung und Flexibilität erhöht. Die MPMs erlauben es den Benutzern, das Kernverhalten zu ändern. Dies erweitert die Möglichkeiten des Apache, ohne dass der Benutzer zusätzliche Software installieren muss. Wenn Sie Fragen dazu oder zu anderen Themen haben, rufen Sie bitte Heroic Support® an.