
Ich würde gerne wissen, warum der Befehl zum Starten des Apache2-Servers tatsächlich drei Prozesse startet
Tatsächlich reicht es aus, diesen Befehl einzugeben:
sudo apache2ctl -k start
Geben Sie dann diesen Befehl ein:
ps aux | grep apache2
ergibt drei Prozesse, die Apache2 entsprechen. Ist das normal?
Antwort1
Ja. Apache verfügt über mehrere verschiedene Verarbeitungsmodule zur Bearbeitung von Anfragen. Die gebräuchlichsten sind worker
und prefork
. Beide verwenden mehrere Prozesse. Prefork
verwendet einen Prozess pro Client-Verbindung und stellt immer sicher, dass einige inaktive Prozesse verfügbar sind, um neue Verbindungen ohne Verzögerung zu verarbeiten. Worker
verwendet immer noch mehrere Prozesse, verwendet in diesen Prozessen aber auch Threads. Dies verbraucht im Vergleich zu weniger Ressourcen, prefork
benötigt aber normalerweise trotzdem mehrere Prozesse.
Ein Prozess, den Sie sehen, ist wahrscheinlich der „Master“-Prozess, der die TCP-Ports öffnet, auf Verbindungen wartet und eingehende Verbindungen an einen anderen Apache-Prozess weiterleitet, der die eigentliche Verarbeitung durchführt. Die anderen Prozesse sind Arbeitsprozesse, entweder von prefork
oder worker
als Modul.