Das Apache HTTP Server Multi-Processing Module (MPM) ist entscheidend für die Performance und Stabilität von Webservern in Produktionsumgebungen. Die Wahl des richtigen MPM – prefork, worker oder event – beeinflusst, wie Apache Anfragen verarbeitet, Ressourcen nutzt und auf Lastspitzen reagiert. Dieses Tutorial zeigt praxisnah, wie die Module arbeiten, welche Vor- und Nachteile sie haben und wie man sie für produktive Systeme optimiert.
MPM-Architektur verstehen
Apache MPMs bestimmen die interne Architektur für Request-Verarbeitung:
prefork: Jeder Request wird von einem eigenen Prozess bearbeitet.worker: Multithreaded, mehrere Threads pro Prozess, jeder Thread bedient einen Request.event: Erweiterung vonworker, unterstützt Keep-Alive-Verbindungen effizienter durch asynchrone Event-Handling-Threads.
Unterschiede im Request Handling
- prefork: Stabil, aber speicherintensiv. Ideal für nicht-thread-sichere Module (z. B. mod_php).
- worker: Weniger Speicherverbrauch, gute Skalierung, erfordert thread-sichere Module.
- event: Optimiert für hohe Concurrency, reduziert Blockierungen bei langen Keep-Alive-Verbindungen.
prefork MPM konfigurieren
Der prefork-MPM arbeitet rein prozessbasiert. Jeder Apache-Prozess bearbeitet einen Request gleichzeitig.
Wichtige Direktiven
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
Praxis-Tipps
- MaxRequestWorkers an RAM-Kapazität anpassen, um Out-of-Memory zu vermeiden.
- Module prüfen, die nicht thread-sicher sind (z. B. ältere PHP-Versionen).
- Keep-Alive aktivieren, aber niedrige
KeepAliveTimeoutfür prefork setzen, um Worker nicht zu blockieren.
worker MPM konfigurieren
Das worker-MPM nutzt mehrere Threads pro Prozess und erlaubt eine höhere Anzahl gleichzeitiger Verbindungen bei geringerem Speicherverbrauch.
Wichtige Direktiven
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 1000
Praxis-Tipps
- Thread-sichere Module verwenden (z. B. PHP-FPM statt mod_php).
- ThreadsPerChild und MaxRequestWorkers an die Serverkapazität und erwarteten Traffic anpassen.
- Keep-Alive funktioniert effizienter als bei prefork, längere Timeouts sind möglich.
event MPM konfigurieren
Das event-MPM erweitert worker und erlaubt die asynchrone Verarbeitung von Keep-Alive-Verbindungen.
Wichtige Direktiven
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 1000
Besonderheiten
- Keep-Alive-Verbindungen werden von speziellen Event-Threads verwaltet, die andere Requests nicht blockieren.
- Ideal für APIs oder Webservices mit vielen kurzlebigen Verbindungen.
- Thread-sichere Module weiterhin Voraussetzung.
MPM auswählen für Produktion
Die Wahl hängt von Anwendungsfall und eingesetzten Modulen ab:
- prefork: klassische PHP-Applikationen mit mod_php, geringe Concurrency-Anforderungen.
- worker: skalierbare Anwendungen mit thread-sicheren Modulen, moderate bis hohe Concurrency.
- event: moderne Web-Services, APIs, WebSockets oder Anwendungen mit vielen Keep-Alive-Verbindungen.
Performance Tuning
Optimale Konfiguration erfordert Monitoring und iterative Anpassung:
- MaxRequestWorkers nach verfügbarem RAM dimensionieren.
- ThreadsPerChild und ServerLimits auf erwarteten Traffic abstimmen.
- Keep-Alive-Zeit, Timeout und Verbindungslimits messen und anpassen.
- Monitoring:
mod_status,apachectl status, externe Tools wie Prometheus verwenden.
Load Testing und Simulation
Vor produktivem Einsatz sollten Load Tests durchgeführt werden:
- Werkzeuge:
ab,hey,wrk - Peak-Load simulieren, um MaxRequestWorkers- und Thread-Limits zu überprüfen.
- Eventuell MPM-Parameter iterativ anpassen, bis optimale Performance bei stabiler Ressourcennutzung erreicht ist.
Fehlerquellen und Troubleshooting
- Segmentierung des Speichers bei zu vielen Prozessen/Threads (prefork/worker) – Logs prüfen.
- Thread-unsichere Module in worker/event – Abstürze vermeiden durch PHP-FPM oder thread-sichere Bibliotheken.
- Keep-Alive-Timeout zu lang – Worker blockieren, neue Requests warten.
- Monitoring von
server-statusund Error-Logs zur Früherkennung nutzen.
Best Practices
- prefork nur verwenden, wenn zwingend nötig (alte Module, nicht-thread-sicher).
- worker MPM für skalierbare PHP-FPM- oder Java/Python-Webapps.
- event MPM für moderne, API-lastige Anwendungen mit hohen Keep-Alive-Anforderungen.
- Regelmäßig Load-Tests und Monitoring durchführen, um Parameter anzupassen.
- Dokumentation der MPM-Konfiguration für jedes Produktionssystem pflegen.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

