Apache-Leistungstuning: MPM-Module

  1. Apache-Leistungstuning: Swap-Speicher
  2. Apache-Leistungstuning: MPM-Module
  3. Apache-Leistungstuning: MPM-Direktiven
  4. Apache-Leistungstuning: MPM-Direktiven konfigurieren
  5. Piped Logging im Apache aktivieren

Lesezeit: 3 Minuten

Der Grundstein für das Verständnis der Apache-Serverleistung sind bei weitem die Multiprocessing-Module (MPMs). Diese Module bestimmen die Grundlage dafür, wie der Apache mit Multiprocessing umgeht. Multiprocessing bedeutet, dass mehrere Operationen gleichzeitig in einem System mit mehreren zentralen Verarbeitungseinheiten (CPU Cores) ausgeführt werden.

Es gibt viele MPMs zur Auswahl; dieser Artikel konzentriert sich jedoch auf die am häufigsten verwendeten Module, die in Liquid Web Linux-basierten VPS-Servern zu finden sind. Diese Module sind:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Andere MPMs
  • Welches MPM ist das beste?

MPM Prefork

Das selbstregulierende MPM Prefork verdankt seinen Namen der Art und Weise, wie es sich selbst in neue identische Prozesse aufteilt oder kopiert, um auf eingehende Anfragen zu warten. Bei MPM Prefork handelt es sich um einen prozessbasierten Ansatz für Multiprocessing ohne Threads, bei dem Apache in einem einzigen übergeordneten Master-Serverprozess ausgeführt wird. Dieser übergeordnete Prozess ist für die Verwaltung aller zusätzlichen untergeordneten Server verantwortlich, die seinen Serverpool bilden. Bei der Verwendung von MPM Prefork bearbeitet jeder untergeordnete Server nur eine einzige Anfrage. Dieser Fokus sorgt für eine vollständige Isolierung von anderen Anfragen, die auf dem Server bearbeitet werden. MPM Prefork wird in der Regel aus Kompatibilitätsgründen eingesetzt, wenn Bibliotheken/Software ohne Threads wie mod_php (DSO) erforderlich sind. Unter dem Gesichtspunkt der Optimierung kann MPM Prefork im Vergleich zu Multi-Thread-Lösungen erhebliche Defizite aufweisen, da es wesentlich mehr Ressourcen benötigt, um ein ähnliches Verkehrsaufkommen wie ein Threaded MPM zu erreichen. Es ist ressourcenintensiv, da für jede Anfrage eine vollständige Kopie des Apache erzeugt werden muss.

Hinweis:
Vermeiden Sie die Verwendung von MPM Prefork, wann immer es möglich ist. Seine Unfähigkeit, mit zunehmendem Datenverkehr gut zu skalieren, wird bei den meisten Systemkonfigurationen schnell die verfügbare Hardware übersteigen.

MPM Worker

Ein hybrider Prefork-, Multi-Thread- und Multiprocessing-Webserver. Wie MPM Prefork verwendet auch MPM Worker den gleichen Ansatz mit einem einzigen übergeordneten Master-Prozess, der alle untergeordneten Prozesse innerhalb seines Serverpools steuert. Im Gegensatz zu MPM Prefork handelt es sich bei den untergeordneten Prozessen jedoch um Multithreading-Prozesse, die Dutzende von Threads (Anfragen) gleichzeitig bearbeiten können. MPM Worker hat die Grundlage für das Multi-Thread-Multiprocessing in Apache-Servern gelegt, das mit Apache 2.2 stabil wurde. Die Thread-Konfiguration ermöglicht es dem Apache, Hunderte von Anfragen mit Leichtigkeit zu bearbeiten, während nur etwa ein Dutzend Kindprozesse im Speicher verbleiben. Die MPM-Worker stellen sowohl eine Lösung mit hoher Kapazität als auch mit geringem Ressourcenbedarf für Webdienste dar.

Hinweis
Die KeepAliveTimeOut-Direktive definiert derzeit die Zeit, die Apache auf Anfragen wartet. Wenn Sie KeepAlive mit MPM Worker verwenden, sollten Sie die kleinstmögliche KeepAliveTimeout verwenden (vorzugsweise 1 Sekunde).

MPM Event

Basierend auf dem MPM Worker-Quellcode, teilt MPM Event die Konfigurationsanweisungen mit MPM Worker. Es arbeitet fast identisch mit MPM Worker, außer wenn es um die Behandlung von KeepAlive-Anfragen geht. MPM Event verwendet einen eigenen Listener-Thread in jedem Kindprozess. Dieser Listening-Thread ist für die Weiterleitung eingehender Anfragen an einen verfügbaren Worker-Thread verantwortlich. Der Listening-Thread löst das Problem, das bei MPM Worker auftritt, wenn ganze Threads auf das KeepAliveTimeout warten müssen. Der Listener-Ansatz von MPM Event stellt sicher, dass Worker-Threads nicht „feststecken“, während sie auf den Ablauf von KeepAliveTimeout warten. Diese Methode hält die maximale Anzahl von Worker-Threads, die so viele Anfragen wie möglich bearbeiten.

Serverlimit Information

Tipp:
MPM Event ist stabil in Apache 2.4 stabil, ältere Versionen können MPM Worker als Alternative verwenden.

Andere MPMs

Es gibt eine Reihe von zusätzlichen MPMs. Diese sind typischerweise Teil der Integration des Apache in andere Betriebssysteme als Unix-basierte Systeme. Diese haben spezifische MPMs, die Voraussetzungen für den Einsatz des Apache auf ihren jeweiligen Systemtypen sind. Diese Arten von MPMs liegen außerhalb des Rahmens dieses Artikels. Weitere Informationen zu spezifischen MPMs finden Sie im Abschnitt MPM Defaults der offiziellen Apache-Dokumentation.

Hinweis:
Wir empfehlen, sich von experimentellen und instabilen MPMs fernzuhalten. Die Unzuverlässigkeit dieser Arten von Software macht sie ununterstützbar.

Welches MPM ist das Beste?

Wenn man über eine Optimierung nachdenkt, ist es wichtig zu verstehen, dass es so etwas wie eine Einheitsgröße für eine Apache-Konfiguration nicht gibt. Die richtige Wahl eines MPMs erfordert die Analyse zahlreicher Variablen wie Datenverkehr, Website-Code, Servertyp, PHP-Handler und verfügbare Hardware. Jeder Server ist einzigartig, so dass die Wahl des besten MPM eine völlig subjektive Entscheidung ist.

Wenn Ihr Anwendungscode kein Multi-Threading unterstützt, wird Ihre Wahl aus Kompatibilitätsgründen zwangsläufig auf MPM Prefork fallen. MPM Prefork enthält Softwaremodule wie mod_php (DSO). MPM Worker ohne KeepAlive funktioniert sehr gut, wenn Ihre Anwendung ein hochleistungsfähiges, lastverteiltes API-System ist. Die Skalierbarkeit und Flexibilität von MPM Event ist eine solide Wahl für das Hosten mehrerer kleiner bis mittelgroßer Sites in einer Shared-Hosting-Konfiguration.

Die meisten einfachen Server-Setups funktionieren gut unter der selbstverwaltenden Standardkonfiguration von MPM Event, was sie zu einem idealen Ausgangspunkt für Optimierungs-Tuning macht. Einmal ausgewählt, kann ein MPM dann zu den Konfigurationsrichtlinien übergehen, um zu überprüfen, welche Einstellungen für die Serverleistung und -optimierung relevant sind. Oder lesen Sie unseren vorherigen Artikel in dieser Serie, Apache Performance Tuning: Swap Memory.

Serie Navigation << Vorheriger ArtikelNächster Artikel >>

Schreibe einen Kommentar