L’optimisation de apache2 en mode prefork et en mode worker

Publié le 14 octobre 2010 par Capmarketer

En mode prefork

Exemple de configuration :

1
2
3
4
5
6
7
<IfModule mpm_prefork_module>
    ServerLimit          128
    MaxClients           128
    MinSpareServers        5
    MaxSpareServers       10
    MaxRequestsPerChild 1000
</IfModule>

Information :

  • ServerLimit 128 ⇔ On démarre au max 128 processus. Le nombre de processus lancé est ajusté dynamiquement, apache lancera 128 processus uniquement si c’est nécessaire.
  • MaxClients 128 ⇔ On permet 128 connexions simultanées (MaxClients = ServerLimit)
  • MinSpareServers 5 ⇔ On demande à apache de conserver au minimum 5 processus en attente de connexion.
  • MaxSpareServers 10 ⇔ On demande à apache de ne pas conserver plus de 10 processus en attente de connexion.
  • MaxRequestsPerChild 1000 ⇔ Au bout de 1000 connexions sur un enfant on le tue (permet de tolérer les éventuelles fuites mémoires)

En mode worker

Exemple de configuration :

1
2
3
4
5
6
7
8
<IfModule mpm_worker_module>
    ServerLimit            2
    ThreadsPerChild       64
    MaxClients           128
    MinSpareThreads       25
    MaxSpareThreads       75
    MaxRequestsPerChild 1000
</IfModule>

Information :

  • ServerLimit 2 ⇔ On démarre au max 2 processus. Le nombre de processus lancé est ajusté dynamiquement, apache lancera 2 processus uniquement si c’est nécessaire.
  • ThreadsPerChild 64 ⇔ On lance 64 thread pour chaque processus
  • MaxClients 128 ⇔ On permet 128 connexions simultanées (MaxClients = ServerLimit * ThreadsPerChild)
  • MinSpareThreads 25 ⇔ On demande à apache de conserver au minimum 25 threads en attente de connexion
  • MaxSpareThreads 75 ⇔ On demande à apache de ne pas conserver plus de 25 threads en attente de connexion
  • MaxRequestsPerChild 1000 ⇔ Au bout de 1000 connexions sur un enfant on le tue (permet de tolérer les éventuelles fuites mémoires)

Source: zeitoun.net.