Apache mpm Prefork vs MPM Worker
En regardant le fichier de configuration d'Apache, je vois Prefork et MPM Worker défini. Quelle est la différence et que l'on est Apache à l'aide?
Vous devez vous connecter pour publier un commentaire.
En regardant le fichier de configuration d'Apache, je vois Prefork et MPM Worker défini. Quelle est la différence et que l'on est Apache à l'aide?
Vous devez vous connecter pour publier un commentaire.
Prefork et travailleur sont de deux type de MPM apache fournit. Les deux ont leurs avantages et leurs inconvénients.
Par mpm par défaut est prefork qui est thread-safe.
MPM Prefork utilise plusieurs processus fils avec un fil de chaque et chaque processus gère une seule connexion à la fois.
MPM Worker utilise plusieurs processus enfant avec chacun de nombreux threads. Chaque thread gère une seule connexion à la fois.
Pour plus de détails, vous pouvez visiter https://httpd.apache.org/docs/2.4/mpm.html et https://httpd.apache.org/docs/2.4/mod/prefork.html
Apache Modules Multi-processus (Mpm) sont responsables de la liaison de ports réseau sur la machine, l'acceptation des demandes, et d'acheminer les enfants pour traiter les demandes (http://httpd.apache.org/docs/2.2/mpm.html).
Ils sont comme n'importe quel autre module Apache, sauf que juste un et un seul MPM doit être chargé dans le serveur à tout moment. Mpm sont choisi lors de la configuration et compilé dans le serveur en utilisant l'argument
--with-mpm=NAME
avec le script de configuration oùNAME
est le nom du MPM.Apache utilise une MPM par défaut pour chaque système d'exploitation, à moins qu'un autre est choisi au moment de la compilation (par exemple sur Windows
mpm_winnt
est utilisé par défaut). Voici la liste des systèmes d'exploitation et leurs Mpm par défaut:beos
mpm_netware
mpmt_os2
prefork
(mise à jour pour la version d'Apache ≥ 2.4:prefork
,worker
, ouevent
, selon les fonctionnalités de la plateforme)mpm_winnt
Pour vérifier que les modules sont compilés dans le serveur, utilisez l'option de ligne de commande
-l
(ici est la documentation). Par exemple sur une installation de Windows que vous pourriez obtenir quelque chose comme:À partir de la version 2.2 c'est le liste des fonctionnalités de base et les modules MPM:
core
- Noyau du Serveur HTTP Apache caractéristiques qui sont toujours disponiblesmpm_common
- Un ensemble de directives qui sont mis en œuvre par plus d'un module multi-processus (MPM)beos
- Ce Module Multi-processus est optimisé pour BeOS.event
- Expérimental de la variante de la norme MPM workermpm_netware
Module Multi-processus de mise en œuvre exclusivement filetée serveur web optimisé pour Novell NetWarempmt_os2
Hybride multi-processus multi-thread MPM pour OS/2prefork
Met en œuvre un non filetée, avant de bifurquer serveur webmpm_winnt
- Ce Module Multi-processus est optimisé pour Windows NT.worker
- Module Multi-processus de mise en œuvre d'un hybride multi-thread multi-processus serveur webMaintenant, à la différence entre
prefork
etworker
.La
prefork
MPMLa
travailleur
MPM met en œuvre un hybride multi-processus multi-thread serveur et offre de meilleures performances, par conséquent, il devrait être préféré à moins que l'une est l'utilisation d'autres modules qui contiennent non thread-safe bibliothèques (voir aussi cette discussion ou cette sur Serverfault).Prendre un coup d'oeil à cette pour plus de détails. Il se réfère à la manière dont Apache gère de multiples demandes. Preforking, qui est la valeur par défaut, commence un certain nombre de processus Apache (2 par défaut ici, même si je crois qu'on peut configurer ce par le biais de httpd.conf). MPM Worker va commencer un nouveau thread à chaque demande, qui je pense, est plus efficace en terme de mémoire. Historiquement, Apache a utilisé prefork, c'est donc un mieux-le modèle testé. Le filetage n'a été ajouté dans la version 2.0.
Pour CentOS 6.x et 7.x (y compris Amazon Linux) utilisation:
Cela va vous montrer qui de la Mpm sont configurés. Soit prefork, travailleur ou d'un événement. Prefork est antérieure, modèle de thread-safe. Travailleur est multi-thread, et l'événement prend en charge le php-mpm qui est censé être un meilleur système de gestion des threads et des demandes.
Cependant, vos résultats peuvent varier, en fonction de la configuration. J'ai vu beaucoup d'instabilité dans php-mpm et pas toutes les améliorations de la vitesse. Une araignée agressive peut épuiser le maximum de processus enfant en php-mpm assez facilement.
Le paramètre de prefork, travailleur ou d'un événement est définie dans la commande sudo nano /etc/httpd/conf.les modules.d/00-mpm.conf (pour CentOS 6.x/7.x/Apache 2.4).
Vous pouvez dire si Apache est à l'aide de la préforme ou de travailleur en émettant la commande suivante
Dans le résultat, regardez pour les mentions de prefork.c ou de travailleur.c
apachectl -V
et chercher à la sortie prochaine deServer MPM
. Aussi pouvez vérifierps aux
et recherchezhttpd
ouhttpd.worker
.apache2ctl -l
n'a pas de travail; a utiliserapachectl -l
.httpd -V
va donner quelque chose comme:Server MPM: worker
Il est facile de basculer entre les prefork ou mpm worker dans Apache 2.4 sur RHEL7
Vérifier MPM type par l'exécution de
Maintenant de changer MPM éditer le fichier suivant et ne commentez pas nécessaire MPM