|
Prefork (bei Unix-Plattformen der Standard)
Dieses MPM implementiert für 2.0 das von Apache 1.3 bekannte Laufzeitverhalten: Ein Eltern-Prozess erzeugt immer einen Vorrat von Kind-Prozessen für die eingehenden HTTP-Anfragen. Die Optionen »MinSpareServers« und »MaxSpareServers« legen den Mindest- und den Maximal-Vorrat an Kind-Prozessen fest. Sinkt die Anzahl der freien Prozesse unter die Anzahl »MinSpareServers«, werden neue erzeugt, steigt sie über »MaxSpareServers«, entfernt Apache sie aus dem Speicher. Da jeder Prozess genau eine Anfrage gleichzeitig bearbeitet, kann durch einen Fehler in einem solchen Prozess auch nur eine Verbindung mit dem Server verloren gehen. Das ist ein Vorteil bei dynamisch generierten Seiten.
Threaded
Dieses MPM ähnelt Prefork. Der primäre Unterschied ist, dass in jedem Apache-2-Prozess mehrere Threads laufen können; wie viele, das legt die Konfigurationsoption »ThreadsPerChild« fest. Bei Verwendung von Threaded achtet der Httpd auf die verbliebene Anzahl der unbeschäftigten Threads.
Die Direktiven »MinSpareThreads« und »MaxSpareThreads« geben an, wie viele Threads unbeschäftigt sein dürfen, bevor neue Prozesse erstellt oder aus dem Speicher entfernt werden. Dieses MPM arbeitet also sowohl mit mehreren Prozessen als auch mit Threads - eine echte Neuerung gegenüber Apache 1.3.
Dexter
Das Dexter-MPM arbeitet ebenfalls mit Prozessen und Threads. Im Unterschied zu Threaded steht die Anzahl der Prozesse fest; die der Threads innerhalb der Prozesse schwankt abhängig von der Serverlast. Die Zahl der anfänglichen Prozesse definiert die Konfigurationsanweisung »NumServers«, die der darin zu Beginn enthaltenen Threads »StartThreads«. Wie sich die Anzahl der Threads bei schwankender Last anpasst, legen »MinSpareThreads« und »MaxSpareThreads« fest.
Perchild
Perchild basiert auf dem Dexter-MPM, bietet aber weitere, für Webhoster wichtige Funktionen. Wie Dexter arbeitet auch Perchild mit einer festen Anzahl von Prozessen, in denen Threads laufen. Um mehrere virtuelle Hosts mit unterschiedlichen Rechten laufen zu lassen, weist Perchild den Prozessen User- und Gruppen-Kennungen zu.
Die Direktive »ChildPerUserID« besagt, wie viele Prozesse unter einer bestimmten Benutzerkennung laufen. Mit der Anweisung »AssignUserID« innerhalb des »VirtualHost«-Kontexts weist man den entsprechenden Prozessen die Benutzerkennung zu.
Module für andere Betriebssysteme
Es existieren MPMs für Windows, OS/2 und BeOS, die das Build-System bei entsprechender Plattform automatisch einbindet.
|