web-dev-qa-db-fra.com

Comment savoir si Apache fonctionne en tant que préfork ou travailleur?

Comment savoir si Apache est en cours d'exécution (ou configuré pour s'exécuter) en tant que préfork ou travailleur?

41
Simon

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.

37
andol

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:

  1. Modifiez le fichier de configuration (par exemple /etc/sysconfig/httpd sur CentOS/RedHat)
  2. Ajoutez ou décommentez cette ligne: HTTPD=/usr/sbin/httpd.worker
  3. Redémarrez Apache

Le MPM en cours d'exécution peut être affiché à l'aide de ce processus:

  1. Activer Apache mod_info
  2. Recherchez l'url mod_info, généralement curl localhost/server-info
  3. La section "Paramètres du serveur" affichera "Nom MPM: Worker"
  4. Courir httpd -V encore une fois - il affichera toujours préfork, pas travailleur

Conclusion:

  • httpd -V montre l'option par défaut, pas quelle option est réellement utilisée

Il 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.

56
Chris Johnson

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.

44
JorgeeFG

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éfork
  • httpd.worker Signifie qu'il fonctionne en tant que travailleur
7
Corrado Fiore

Sur 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.

4
Steven T. Snyder

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.

4
songpham

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.

3
Quinn Comendant

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

3
james turner

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"
2
Manu

Une façon de le comprendre dans Debian comme des distributions, est de lancer:

apachectl -V | grep -i mpm
1
Hex