A la fin de la phase de démarrage, après que la configuration ait été lue, le contrôle général d’Apache est passé à un module de gestion de processus, le Multi-Processing-Module
.
Un MPM
est une interface entre le serveur Apache
qui tourne et l’OS
sous-jacent. Son rôle principal est d’optimiser Apache
en fonction de la plateforme sur laquelle le serveur tourne. Comme indiqué dans le titre, le MPM
est lui-même un module. C’est, à l’inverse de tous les autres, modules, un module au niveau système
et non pas un module au niveau applicatif
.
Il exite plusieurs MPM
‘s.
MPM Prefork
: c’est un modèle non orienté thread
, ressemblant fortement aux mode de fonctionnement des serveurs Apache 1.x
MPM Worker
: modèle orienté thread
. Il a une plus grande souplesse et s’adapte beaucoup mieux en fonction de la demande. Il est particulièrement plus performant que le modèle précédent, notamment avec certains types d’applications.
Tous les deux souffrent d’une limite qui affecte tous les serveurs très demandés. Alors que le HTTP Keepalive
est nécéssaire pour réduite le nombre de connexions TCP
et la surcharge réseau, il « ligotte » le processus ou le thread d’un serveur pendant toute la durée de la connexion, tant que le Keepalive
est actif.
Le nombre de threads
disponibles est une ressource critique pour la plateforme sur laquelle est le serveur. Par exemple, un serveur basé sur le module MPM Worker
est réellement occupé s’il doit se charger de gérer plusieurs dizaines de milliers de demandes simultanément. L’OS sous-jacent peut parfois arriver à court de threads
.
C’est pourquoi un nouveau MPM
est en cours de développement. Il en est à un stade avancé, mais pas encore au stade de production, stade qu’ont atteint les deux modules cités précédemment. C’est le MPM
basé sur des événements, le Event MPM
. Notez bien que ce type de module ne fonctionnera pas en mode sécurisé (https
). Par contre, il aura la possiblité de gérer un nombre nettement plus important de hits
que les autres modules.