ou plus techniquement 'compilé pour fonctionner comme'
Réponses:
37
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.
Hm, sur Ubuntu, je n'ai ni ouvrier ni prépuce énumérés quand je fais cela ...
mlissner
2
Sur Ubuntu, vous pouvez utiliser apache2ctl -Mpour répertorier les modules actifs.
SteffenNielsen
53
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 -Vaffiche 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:
Editer le fichier de configuration (par exemple /etc/sysconfig/httpdsur CentOS / RedHat)
Ajoutez ou décommentez cette ligne: HTTPD=/usr/sbin/httpd.worker
Redémarrer Apache
Ce MPM en cours d'exécution peut être montré en utilisant ce processus:
Activer Apache mod_info
Interroger l'URL mod_info, généralement curl localhost/server-info
La section "Paramètres du serveur" affichera "Nom MPM: Travailleur"
Exécutez à httpd -Vnouveau - il affichera toujours prefork, pas travailleur
Ligne de fond:
httpd -V affiche l'option par défaut, pas celle qui est réellement utilisée
Il y a des réponses sur beaucoup, beaucoup de sites Web disant, utilisez httpd -Vpour dire si Apache exécute prefork ou worker. Ils ont tous tort. Essayez la procédure ci-dessus pour voir par vous-même.
Pour votre information, selon httpd.apache.org/docs/trunk/mpm.html, le MPM peut être un module statique sur toutes les plates-formes ou construit sous la forme d'un DSO (sous Unix). Lorsqu'il est construit en tant que module statique, "le serveur doit être reconstruit afin de changer le MPM". La documentation d'Apache est-elle incorrecte en ce qui concerne le module statique MPM étant non modifiable sauf en reconstruisant le serveur?
Steven T. Snyder
Cela ressemble beaucoup à quelque chose de spécifique à la distribution, avec un wrapper de plus haut niveau?
andol
2
Sur CentOS 6.6 / usr / sbin / httpd, /usr/sbin/httpd.event et /usr/sbin/httpd.worker sont tous des fichiers binaires distincts avec différents MPM configurés au moment de la compilation (respectivement prefork, event et worker). Changer le réglage de HTTPD dans / etc / sysconfig / httpd ne fait que contrôler quel binaire est exécuté par le script init.
Paul Haldane
Je devais exécuter apache2 -V au lieu de httpd -V sur Ubuntu 16.04 LTS
cnizzardini
41
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-enableddans /etc/apache2.
oui, bonne réponse! simple et renvoie ce qui est nécessaire
Flash Thunder
Travaillé pour moi le meilleur, merci (travaillé sur Apache 2.4 .... semble que cela ne fonctionne pas sur Apache 2.2)
dmikam
Le eventMPM 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 ».
Jonathan Berger
7
Sur RedHat et ses dérivés, lancez simplement topou ps auxregardez le nom du processus httpd:
httpd signifie qu'Apache fonctionne en tant que prefork
httpd.worker signifie qu'il fonctionne en tant que travailleur
@ChrisJohnson, découverte intéressante ... J'ai cru comprendre que le MPM ne pouvait pas être modifié par la configuration, mais uniquement par la compilation. Il semble que le PO pensait la même chose, puisqu'il a commenté sa question avec "ou plus techniquement" compilé pour fonctionner comme "". Je regarderai dans la reproduction de votre réponse et une fois que je l'aurai confirmée, je révoquerai la mienne.
Steven T. Snyder
J'ai confirmé dans la documentation d'Apache à httpd.apache.org/docs/trunk/mpm.html que les MPM peuvent être générés en tant que modules DSO et chargés dynamiquement avec la directive LoadModule, sur "Unix et des plates-formes similaires". Donc, le MPM peut en effet être changé au moment du chargement dans certaines circonstances (ce qui pourrait être la configuration la plus courante de nos jours ..)
Steven T. Snyder
4
Chris Johnson a raison. Allez sur httpd.conf => ajoutez cette ligne:
sur centos (ou rhel), vous pouvez exécuter cette commande:
ps -ef | grep httpd
si vous voyez en /usr/sbin/httpd.workercours d'exécution, il utilise alors le MPM travailleur. si vous voyez /usr/sbin/httpdcourir, alors il utilise prefork
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.
Nous trouvons ici le module worker.c, d’où le logiciel worker MPM.
la source
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.la source
Dans Ubuntu 14.04
Raconte
event
,prefork
,worker
Vous pouvez le changer en ajoutant des liens symboliques pour
mpm_<chosen>
demods-available
àmods-enabled
dans/etc/apache2
.Un seul est autorisé à la fois.
la source
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
oups aux
regardez le nom du processus httpd:httpd
signifie qu'Apache fonctionne en tant que preforkhttpd.worker
signifie qu'il fonctionne en tant que travailleurla source
Sous RHEL / Fedora / etc, exécutez
httpd -V
. Vous obtiendrez une sortie comprenant les éléments suivants:Ici, 'Serveur MPM' est 'Prefork', mon serveur exécute donc le préfork MPM.
la source
Chris Johnson a raison. Allez sur httpd.conf => ajoutez cette ligne:
Redémarrez apache: /etc/init.d/httpd restart. Accédez ensuite à localhost / server-info par votre navigateur et consultez la section MPM Name .
la source
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
:Puis vérifiez les en-têtes avec
curl -I localhost | grep X-MPM
.la source
sur centos (ou rhel), vous pouvez exécuter cette commande:
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 preforkla source
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:
la source
Une façon de comprendre cela dans Debian, comme les distributions, est de courir:
la source