Comment savoir si apache est exécuté (ou configuré pour fonctionner) en tant que préfork ou worker?
Comment savoir si apache est exécuté (ou configuré pour fonctionner) en tant que préfork ou worker?
Réponses:
Le MPM est configuré à la compilation. Une façon de le comprendre après est de lister les modules. Cette liste inclura le MPM choisi. La liste peut être accomplie en exécutant le binaire apache, avec le drapeau -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:~$
Nous trouvons ici le module worker.c, d’où le logiciel worker MPM.
apache2ctl -M
pour répertorier les modules actifs.
Les réponses données par Series8217 et Andol sont toutes les deux incorrectes.
La question était de savoir comment savoir si Apache exécutait prefork ou worker. Les conseils donnés par les autres réponses indiquent uniquement ce qu'est le MPM par défaut (basé sur des modules intégrés), et non si ce choix par défaut ou un autre choix est utilisé à l'heure actuelle.
Si httpd -V
affiche prefork, cela signifie simplement que prefork est le MPM par défaut compilé. Cela peut être annulé 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
Ce MPM en cours d'exécution peut être montré en utilisant ce processus:
curl localhost/server-info
httpd -V
nouveau - il affichera toujours prefork, pas travailleurLigne de fond:
httpd -V
affiche l'option par défaut, pas celle qui est réellement utiliséeIl y a des réponses sur beaucoup, beaucoup de sites Web disant, utilisez httpd -V
pour dire 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
Raconte event
, prefork
,worker
Vous pouvez le changer en ajoutant des liens symboliques pour mpm_<chosen>
de mods-available
à mods-enabled
dans /etc/apache2
.
Un seul est autorisé à la fois.
event
MPM est, selon le site d'Apache «une variante du travailleur dans le but MPM de la consommation de threads que pour les connexions avec le traitement actif ».
Sur RedHat et ses dérivés, lancez simplement top
ou ps aux
regardez le nom du processus httpd:
httpd
signifie qu'Apache fonctionne en tant que preforkhttpd.worker
signifie qu'il fonctionne en tant que travailleurSous RHEL / Fedora / etc, exécutez httpd -V
. Vous obtiendrez une sortie comprenant les éléments suivants:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Ici, 'Serveur MPM' est 'Prefork', mon serveur exécute donc le préfork MPM.
Chris Johnson a raison. Allez sur httpd.conf => ajoutez cette ligne:
<Location /server-info>
SetHandler server-info
</Location>
Redémarrez apache: /etc/init.d/httpd restart. Accédez ensuite à localhost / server-info par votre navigateur et consultez la section MPM Name .
Voici une autre méthode qui, selon moi, 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>
Puis vérifiez les en-têtes avec curl -I localhost | grep X-MPM
.
sur centos (ou rhel), vous pouvez exécuter cette commande:
ps -ef | grep httpd
si vous voyez en /usr/sbin/httpd.worker
cours d'exécution, il utilise alors le MPM travailleur. si vous voyez /usr/sbin/httpd
courir, alors 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 ), ce dernier vous donnera le MPM que vous utilisez:
links -dump http://localhost/server-info/?server | grep "MPM Name"