En utilisant Apache en tant que serveur web, vous profituez de sa modularité, notamment dans le fait qu'il vous sera possible d'ajouter et de supprimer des fonctionnalités.
Les modules multi-traitements (MPM) fournissent cette fonctionnalité modulaire au cœur d'Apache - la gestion des connexions réseau, la liaison aux ports et l'envoi des requêtes. Les MPM vous permettent d'utiliser des threads ou même de déplacer Apache vers un autre système d'exploitation.
Seul un MPM peut être actif à la fois, et il doit être compilé statiquement avec:--with-mpm=(worker|prefork|event)
Le modèle traditionnel d'un processus par demande est appelé prefork.
Un modèle plus récent, threadé, est appelé worker , qui utilise plusieurs processus, chacun avec plusieurs threads pour obtenir de meilleures performances avec une surcharge réduite.
Enfin, event MPM est un module qui conserve des pools séparés de threads pour différentes tâches.
Pour déterminer quel MPM vous utilisez actuellement, exécutez httpd -V
Le choix du meilleur MPM à utiliser dépend de nombreux facteurs. En apparence, le threading sonne mieux que le forking, si tous les modules sous-jacents sont thread-safe, y compris toutes les bibliothèques utilisées par PHP.
Prefork est le choix le plus sûr; vous devriez faire des tests minutieux si vous choisissez worker. Les gains de performances dépendent également des bibliothèques fournies avec votre distribution et de votre matériel.
Worker MPM
utilise plusieurs processus enfants qui peuvent chacun avoir plusieurs threads. Chaque thread gère une connexion à la fois. Worker est généralement un bon choix pour les serveurs à fort trafic exécutant des versions d'Apache antérieures à 2.4 car il a une empreinte mémoire plus petite que le MPM prefork. Cependant, il souffre d'incompatibilités avec les bibliothèques non thread-safe.
Event MPM
est threadé comme le Worker MPM, mais il est conçu pour permettre à davantage de requêtes d'être traitées simultanément en transférant certains travaux de traitement aux threads de support, libérant ainsi les threads principaux pour qu'ils fonctionnent sur de nouvelles demandes. L'événement MPM fonctionne de la même manière que le MPM travailleur en cas de connexions SSL. Apache a les besoins en ressources les plus bas lorsqu'il est utilisé sous Event MPM. Event MPM n'est disponible qu'à partir d' Apache 2.4
Prefork MPM
utilise plusieurs processus enfants avec un thread chacun. Chaque processus gère une connexion à la fois. Sur de nombreux systèmes, prefork est comparable en vitesse à celui du worker, mais il consomme plus de mémoire. La conception sans thread de Prefork présente des avantages par rapport aux travailleurs dans certaines situations: Prefork est le module le plus sûr et peut être utilisé avec des modules tiers non thread-safe. Prefork MPM est également plus facile à déboguer sur les plates-formes avec une prise en charge médiocre du débogage des threads.
Quel que soit le MPM que vous choisissez, vous devez le configurer de manière appropriée. En général, la configuration ou le réglage des performances d'un MPM implique d'indiquer à Apache comment contrôler les nœuds de calcul actifs et inactifs et s'il s'agit de threads ou de processus. Depuis Apache 2.2, Prefork est le MPM par défaut .
LOCALISATION D'APACHE.CONF
Pour démarrer, recherchez et ouvrez le fichier de configuration Apache et recherchez la section des directives MPM:
- CentOS / RHEL / Fedora : /etc/httpd/conf/httpd.conf
- Ubuntu / Debian : /etc/apache2/httpd.conf
- DirectAdmin : /etc/httpd/conf/extra/httpd-mpm.conf
- cPanel : /etc/apache2/conf.d/httpd.conf
- Plesk : /etc/httpd/conf/
Si vous utilisez nano, vi ou vim: une fois que vous ouvrez le fichier, vous pouvez trouver les directives en faisant défiler le fichier. En utilisant VI ou VIM, vous pouvez également effectuer une recherche en tapant la barre oblique «/» et en tapant la chaîne exacte que vous recherchez (la recherche est spécifique à la casse).
Vous trouverez ci-dessous un exemple de configuration pour le module préfork MPM:
#nano /etc/httpd/conf/httpd.conf
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 20
MaxSpareServers 40
MaxRequestWorkers 200
MaxConnectionsPerChild 4500
</ IfModule>
Pour changer le MPM dans les systèmes basés sur RHEL ou Debian , remplacez respectivement mpm_prefork_module par mpm_worker_module ou mpm_event_module.
A savoir que si vous utilisez un panel type Cpanel, il vous sera possible de le faire via l'interface graphique (EasyApache notamment)