Wie kann ich feststellen, ob Apache als Prefork oder Worker ausgeführt wird (oder für die Ausführung konfiguriert ist)?
Wie kann ich feststellen, ob Apache als Prefork oder Worker ausgeführt wird (oder für die Ausführung konfiguriert ist)?
Antworten:
Das MPM wird zur Kompilierungszeit konfiguriert. Eine Möglichkeit, es später herauszufinden, besteht darin, eine in Modulen kompilierte Liste zu erstellen. Diese Liste enthält das ausgewählte MPM. Die Auflistung kann durch Ausführen der Apache-Binärdatei mit dem Flag -l erfolgen.
andreas@halleck:~$ apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
andreas@halleck:~$
Hier finden wir das Modul worker.c, daher führe ich das worker MPM aus.
apache2ctl -M
aktive Module auflisten.
Die Antworten von Series8217 und Andol sind beide falsch.
Die Frage war, wie zu sagen , ob Apache laufen prefork oder Arbeiter. Die Ratschläge der anderen Antworten geben nur Aufschluss über die Standard- MPM (basierend auf kompilierten Modulen), nicht jedoch darüber, ob diese Standardeinstellung oder eine andere Auswahl zurzeit verwendet wird.
Wenn httpd -V
prefork angezeigt wird, bedeutet dies nur, dass prefork das kompilierte Standard-MPM ist. Dies kann durch Ändern der Einstellungen einer Apache-Konfigurationsdatei wie folgt außer Kraft gesetzt werden:
/etc/sysconfig/httpd
unter CentOS / RedHat)HTTPD=/usr/sbin/httpd.worker
Welches MPM gerade ausgeführt wird, können Sie mit diesem Verfahren anzeigen:
curl localhost/server-info
httpd -V
erneut aus - es wird weiterhin Prefork angezeigt, nicht WorkerEndeffekt:
httpd -V
Zeigt die Standardoption an, nicht welche Option aktuell verwendet wirdEs gibt Antworten auf vielen, vielen Websites, httpd -V
die angeben, ob Apache Prefork oder Worker ausführt. Sie sind alle falsch. Probieren Sie das oben beschriebene Verfahren aus, um sich selbst davon zu überzeugen.
In Ubuntu 14.04
a2query -M
Sagt event
, prefork
,worker
Sie können es ändern, indem Sie symbolische Links für mpm_<chosen>
von mods-available
bis mods-enabled
in hinzufügen /etc/apache2
.
Es ist immer nur einer erlaubt.
event
MPM ist nach Angaben von Apache "eine Variante des Worker-MPM mit dem Ziel, Threads nur für Verbindungen mit aktiver Verarbeitung zu verbrauchen".
Starten Sie auf RedHat und Derivaten einfach top
oder ps aux
und sehen Sie sich den Namen des httpd-Prozesses an:
httpd
bedeutet, dass Apache als Prefork ausgeführt wirdhttpd.worker
bedeutet, es läuft als ArbeiterAuf RHEL / Fedora / etc, führen httpd -V
. Sie erhalten eine Ausgabe, die Folgendes umfasst:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Hier ist "Server MPM" "Prefork", daher wird auf meinem Server das Prefork-MPM ausgeführt.
Chris Johnson ist richtig. Gehen Sie zu httpd.conf => fügen Sie diese Zeile hinzu:
<Location /server-info>
SetHandler server-info
</Location>
Starten Sie Apache neu: /etc/init.d/httpd restart. Greifen Sie dann mit Ihrem Browser auf localhost / server-info zu und lesen Sie den Abschnitt MPM-Name .
Hier ist eine andere Methode, von der ich erwarte, dass sie zuverlässig ist, um festzustellen, welches MPM verwendet wird. Fügen Sie Folgendes hinzu httpd.conf
:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
Überprüfen Sie dann die Überschriften mit curl -I localhost | grep X-MPM
.
Auf Centos (oder Rhel) können Sie diesen Befehl ausführen:
ps -ef | grep httpd
Wenn Sie sehen /usr/sbin/httpd.worker
, dass ausgeführt wird, wird das Worker-MPM verwendet. Wenn Sie /usr/sbin/httpd
laufen sehen, wird Prefork verwendet
Die Antwort von Chris Johnson ist richtig.
Nach dem Aktivieren des Info-Moduls, wie in der Apache-Dokumentation ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ) dokumentiert , erhalten Sie mit diesem einen Liner den MPM, den Sie verwenden:
links -dump http://localhost/server-info/?server | grep "MPM Name"