Article ID: 113007, created on May 17, 2013, last review on Apr 8, 2015

  • Applies to:
  • Plesk 12.0 for Linux

Lösung

Prefork:

Das prefork-MPM verwendet mehrere untergeordnete Prozesse mit jeweils einem Thread. Jeder Prozess verarbeitet jeweils immer eine Verbindung. Auf vielen Systemen ist prefork ähnlich schnell wie worker, beansprucht aber mehr Speicher. Aufgrund seines Single-Thread-Designs ist das prefork-MPM gegenüber dem worker-MPM in manchen Situationen von Vorteil: Es kann mit nicht threadsicheren Modulen anderer Hersteller verwendet werden und lässt sich auf Plattformen mit schlechter Thread-Debugging-Unterstützung leichter debuggen.

Vorteile:

  • Entwickelt in Apache 1    
  • Mehrere untergeordnete Prozesse, 1 Thread pro Prozess, Anforderungen werden in untergeordneten Prozessen verarbeitet    
  • Bessere Isolierung und Stabilität    
  • Auf ordnungsgemäße Funktion mit Plesk getestet

Nachteile:

  • Höherer Speicherbedarf und geringere Leistung als Threaded-MPMs

Worker:

Das worker-MPM verwendet mehrere untergeordnete Prozesse mit jeweils mehreren Threads. Jeder Thread verarbeitet jeweils immer eine Verbindung. Worker eignet sich im Allgemeinen gut für Server mit hohem Traffic-Aufkommen, da es weniger Speicher beansprucht als das prefork-MPM.

Vorteile:

  • Entwickelt in Apache 2, zusammen mit dem prefork-Modul

  • Mehrere Prozesse, mehrere Threads pro Prozess, Anforderungen werden in Threads verarbeitet

  • Beansprucht weniger Speicher und bietet höhere Leistung

Nachteile:

  • Bietet nicht dasselbe Maß an Isolation der Anforderungen wie ein prozessbasiertes MPM

  • Wenn ein einzelner Thread angehalten wird bzw. außer Kontrolle gerät, wird der gesamte Prozess beendet, was sich auch auf alle übrigen Threads auswirkt

  • Erfordert einen threadsicheren Prozessor zur Bearbeitung dynamischer Inhalte

  • Wird von Plesk nicht unterstützt

    Jedes Modul weist einen anderen Satz Konfigurationsanweisungen in der Konfigurationsdatei des Apache-Webservers auf:

Prefork:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild 4000
</IfModule>

Worker:

<IfModule worker.c>
 StartServers         2
 MaxClients         150
 MinSpareThreads     25
 MaxSpareThreads     75
 ThreadsPerChild     25
 MaxRequestsPerChild  0
 </IfModule>

Informationen:

In den RedHat-basierten Linux-Distributionen ist der Apache-Webserver standardmäßig für die Ausführung mit dem prefork-Modul konfiguriert. Prinzipiell können Sie ihn auf "worker" umstellen, wenn dies Ihren Anforderungen besser entspricht. Beachten Sie in diesem Zusammenhang jedoch die unten stehende Warnung.

Warnung: Plesk wurde nicht mit dem Apache MPM worker getestet. Bei der Installation unter Debian/Ubuntu wird das 'psa'-Paket entfernt.

Wenn Sie dennoch zum worker-Modul wechseln wollen, reicht es aus, diese Anweisung in der Datei /etc/sysconfig/httpd auszukommentieren:

# grep HTTPD= /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker

Starten Sie anschließend Apache neu:

# /etc/init.d/httpd restart

Beachten Sie: Das worker-MPM setzt voraus, dass ein spezielles PHP-Modul vom Apache-Webserver konfiguriert/geladen wird:

# cat /etc/httpd/conf.d/php.conf|grep -A3 "worker.c"
<IfModule worker.c>
 LoadModule php5_module modules/libphp5-zts.so
</IfModule>

Und zum Schluss die von Kunden und Technikern häufig gestellte Frage: Wie stelle ich fest, auf welchem MPM-Modul der Server ausgeführt wird?

Bestimmen Sie zunächst mit dem Dienstprogramm ps die Befehlszeile des laufenden Apache-Prozesses:

 # ps aux | grep -v grep | egrep "apache|httpd"
 root      1684  0.0  1.4 284484 14888 ?        Ss   17:52   0:00 /usr/sbin/httpd
 apache    3101  0.0  0.7 284484  7596 ?        S    18:02   0:00 /usr/sbin/httpd 

Überprüfen Sie anschließend mit dem folgenden Befehl, welches Modul ausgeführt wird:

 # /usr/sbin/httpd -l | egrep "prefork|worker" 

Alternativ können Sie die Konfigurationsdatei /etc/sysconfig/httpd überprüfen:

 # grep -B 5 HTTPD= /etc/sysconfig/httpd
 # The default processing model (MPM) is the process-based
 # "prefork" model. A thread-based model, "worker," is also
 # available, but does not work with some modules (such as PHP).
 # The service must be stopped before changing this variable.
 #
 #HTTPD=/usr/sbin/httpd.worker 

Weitere Informationen

Apache MPM prefork

Apache MPM worker

a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 56797cefb1efc9130f7c48a7d1db0f0c 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7

Email subscription for changes to this article
Save as PDF