Comment savoir si Apache est en cours d'exécution (ou configuré pour s'exécuter) en tant que préfork ou travailleur?
Le MPM est configuré au moment de la compilation. Une façon de le comprendre ensuite est de lister les modules compilés. Cette liste comprendra le MPM choisi. La liste peut être effectuée en exécutant le binaire Apache, avec l'indicateur -l.
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:~$
Ici, nous trouvons le module worker.c, donc j'exécute le MPM travailleur.
Les réponses données par Series8217 et Andol sont toutes les deux incorrectes.
La question était, comment savoir si Apache est en cours d'exécution préfork ou travailleur. Les conseils donnés par les autres réponses ne disent que ce que le par défaut MPM est (basé sur des modules compilés), pas si cette valeur par défaut ou une autre option est actuellement utilisée.
Si httpd -V
montre prefork, cela signifie simplement que prefork est le MPM par défaut compilé. Cela peut être remplacé en modifiant un paramètre de fichier de configuration Apache, comme indiqué dans ce processus:
/etc/sysconfig/httpd
sur CentOS/RedHat)HTTPD=/usr/sbin/httpd.worker
Le MPM en cours d'exécution peut être affiché à l'aide de ce processus:
curl localhost/server-info
httpd -V
encore une fois - il affichera toujours préfork, pas travailleurConclusion:
httpd -V
montre l'option par défaut, pas quelle option est réellement utiliséeIl existe des réponses sur de nombreux sites Web disant: utilisez httpd -V
pour savoir si Apache exécute prefork ou worker. Ils ont tous tort. Essayez la procédure ci-dessus pour voir par vous-même.
Dans Ubuntu 14.04
a2query -M
Dit event
, prefork
, worker
Vous pouvez le modifier en ajoutant des liens symboliques pour mpm_<chosen>
de mods-available
à mods-enabled
dans /etc/Apache2
.
Un seul est autorisé à la fois.
Sur RedHat et ses dérivés, lancez simplement top
ou ps aux
Et regardez le nom du processus httpd:
httpd
signifie qu'Apache fonctionne en tant que préforkhttpd.worker
Signifie qu'il fonctionne en tant que travailleurSur RHEL/Fedora/etc, exécutez httpd -V
. Vous obtiendrez une sortie qui comprend les éléments suivants:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Ici, "Server MPM" est "Prefork", donc mon serveur exécute la préfork MPM.
Chris Johnson a raison. Allez dans httpd.conf => ajoutez cette ligne:
<Location /server-info>
SetHandler server-info
</Location>
Redémarrez Apache: /etc/init.d/httpd restart. Ensuite, accédez à localhost/server-info par votre navigateur et regardez la section Nom MPM.
Voici une autre méthode qui, je pense, devrait être fiable pour déterminer quel MPM est utilisé. Ajoutez ce qui suit à votre httpd.conf
:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
Vérifiez ensuite les en-têtes à l'aide de curl -I localhost | grep X-MPM
.
sur centos (ou rhel), vous pouvez exécuter cette commande:
ps -ef | grep httpd
si tu vois /usr/sbin/httpd.worker
en cours d'exécution, puis il utilise le MPM de travail. si tu vois /usr/sbin/httpd
en cours d'exécution, puis il utilise prefork
La réponse de Chris Johnson est juste.
Après avoir activé le module info, comme indiqué dans la documentation Apache ( http://httpd.Apache.org/docs/2.2/mod/mod_info.html ), cette ligne vous donnera le MPM que vous utilise:
links -dump http://localhost/server-info/?server | grep "MPM Name"
Une façon de le comprendre dans Debian comme des distributions, est de lancer:
apachectl -V | grep -i mpm