Les MPM d’Apache expliqués

Le serveur web Apache est le serveur web le plus populaire au monde. Cela est dû en partie à sa conception modulaire. Apache 2 a introduit les modules multiprocesseurs, ou MPMs. Les MPMs changent la fonctionnalité de base du serveur web. Ils modifient la façon dont Apache écoute le réseau, accepte et traite les requêtes. Une grande partie de cette fonctionnalité est plutôt technique et n’entre pas dans le cadre de cet article. Cet article explique brièvement ce que sont les différents MPM et comment ils fonctionnent. Pour des informations plus détaillées sur les différents MPM, veuillez consulter la documentation d’Apache.

Introduction

Toutes les versions d’Apache 2.0 et supérieures exécutent une certaine forme de MPM, et il existe une variété de MPM pour les différents systèmes d’exploitation. Cet article se concentrera uniquement sur ceux disponibles pour le système d’exploitation Linux. Tout d’abord, vous devez déterminer quelle version d’Apache et quel MPM votre serveur utilise actuellement. Vous pouvez le déterminer en exécutant la commande suivante sur la ligne de commande.

httpd -V | grep -i 'version\|mpm'

L’exécution de cette commande vous donnera une sortie qui ressemblera à ceci:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

Dans ce cas, le serveur exécute Apache 2.4 et utilise le MPM Event. Cette sortie peut être différente selon la version d’Apache et le MPM que votre serveur exécute actuellement.

Changer votre MPM sur un serveur cPanel est facile. Il suffit d’exécuter le script EasyApache et de sélectionner le MPM que vous souhaitez parmi ceux disponibles. La liste présente sera différente selon que vous exécutez Apache 2.0, Apache 2.2 ou Apache 2.4. Sur les versions d’Apache inférieures à 2.4, seuls Prefork et Worker sont considérés comme stables. L’Event MPM est considéré comme expérimental sur Apache 2.2 et ne doit être utilisé qu’avec Apache 2.4 ou une version ultérieure.

Si vous n’êtes pas à l’aise pour exécuter vous-même EasyApache, veuillez contacter Heroic Support® et nous serons plus qu’heureux de vous aider.

Prefork

Avec le module Prefork installé, Apache est un serveur web non threadé et pré-forking. Cela signifie que chaque processus enfant Apache contient un seul thread et traite une seule requête à la fois. De ce fait, il consomme plus de ressources que les MPMs threadés : Worker et Event.

Prefork est le MPM par défaut, donc si aucun MPM n’est sélectionné dans EasyApache, Prefork sera sélectionné. Il reste le meilleur choix si Apache doit utiliser des bibliothèques non threadées telles que mod_php (DSO), et il est idéal si l’isolation des processus est importante.

Worker

Le MPM Worker transforme Apache en un serveur web multi-processus et multi-threads. Contrairement à Prefork, chaque processus enfant sous Worker peut avoir plusieurs threads. Ainsi, Worker peut traiter plus de requêtes avec moins de ressources que Prefork. Worker est généralement recommandé pour les serveurs à fort trafic utilisant des versions d’Apache antérieures à 2.4. Toutefois, Worker est incompatible avec les bibliothèques non threadées. Si vous avez besoin d’exécuter quelque chose qui n’est pas thread safe, vous devrez vous en tenir à Prefork.

Event

Chaque processus sous Event peut également contenir plusieurs threads mais, contrairement à Worker, chacun est capable de réaliser plus d’une tâche. Apache a les plus faibles besoins en ressources lorsqu’il est utilisé avec le MPM Event.

Event, cependant, n’est pris en charge que sur les serveurs exécutant Apache 2.4. Sous Apache 2.2, Event est considéré comme expérimental et est incompatible avec certains modules des anciennes versions d’Apache. Néanmoins, sur les serveurs Apache 2.2 à fort trafic où Apache a connu des problèmes de mémoire, la mise à niveau d’Apache pour profiter du MPM Event peut donner des résultats significatifs.

Les autres MPM

Il existe un certain nombre d’autres MPM expérimentaux tels que Threadpool, Perchild et Leader. Liquid Web recommande de ne pas exécuter ces MPMs. Comme ils sont expérimentaux, il n’y a aucune garantie qu’ils fonctionneront comme prévu et nous ne pouvons ni les supporter ni garantir que nous serons en mesure de les corriger.

L’ajout des modules multi-processus à Apache ont augmenté sa puissance et sa flexibilité. Les MPMs permettent aux utilisateurs de modifier le comportement de base. Cela augmente ce qu’un utilisateur peut faire avec Apache sans avoir à installer de logiciel supplémentaire. Si vous avez des questions concernant ceci ou toute autre chose, veuillez appeler Heroic Support®.