Comment optimiser la configuration d’Apache pour un site web à fort trafic

optimisation la configuration d'Apache pour un site web à fort trafic

Si vous exploitez un site web qui reçoit beaucoup de trafic, il est essentiel d’optimiser la configuration de votre serveur web Apache afin de garantir des performances et une disponibilité maximales. Dans cet article, nous allons vous donner quelques conseils et exemples sur la manière d’optimiser votre configuration Apache pour les sites web à fort trafic.

1. Utiliser le bon module MPM

Apache utilise des modules multiprocessus (MPM) pour traiter les requêtes des clients. Les MPM sont chargés de créer des processus enfants ou des threads pour traiter les requêtes entrantes. Apache dispose de trois modules MPM : preforkworker et event.

Le module MPM prefork est le plus ancien et le plus stable des modules MPM. Il crée un processus par connexion, ce qui peut entraîner une utilisation élevée des ressources. Le MPM worker crée plusieurs threads par processus, ce qui peut améliorer les performances et réduire l’utilisation des ressources. Le MPM event est similaire au MPM worker, mais il ajoute un mécanisme de notification d’événements asynchrones pour améliorer encore les performances.

Pour optimiser votre configuration Apache pour un trafic élevé, nous recommandons d’utiliser les modules MPM worker ou event. Vous pouvez activer ces modules en décommentant les lignes suivantes dans votre fichier de configuration d’Apache :

LoadModule mpm_worker_module modules/mod_mpm_worker.so

or

LoadModule mpm_event_module modules/mod_mpm_event.so

2. Augmenter le nombre de processus/threads enfants

Pour gérer un volume élevé de requêtes entrantes, vous devez augmenter le nombre de processus enfants ou de threads qu’Apache peut créer. Le nombre de processus enfants ou de threads que vous devez créer dépend de la quantité de mémoire et de ressources CPU disponibles sur votre serveur.

Pour augmenter le nombre de processus ou de threads enfants, vous devez modifier les directives StartServers, MaxClients, MaxSpareServers et MinSpareServers dans votre fichier de configuration Apache.

StartServers est le nombre de processus enfants lancés au démarrage d’Apache.  MaxClients est le nombre maximum de connexions simultanées qu’Apache peut gérer.  MaxSpareServers est le nombre maximum de processus enfants inactifs qu’Apache maintient en vie.  MinSpareServers est le nombre minimum de processus enfants inactifs qu’Apache maintient en vie.

Par exemple, pour régler les StartServers sur 10, les MaxClients sur 500, les MaxSpareServers sur 200 et les MinSpareServers sur 10, vous pouvez ajouter les lignes suivantes à votre fichier de configuration Apache :

StartServers 10
MaxClients 500
MaxSpareServers 200
MinSpareServers 10

Vous devriez également envisager de définir la directive ServerLimit à la même valeur que MaxClients. Cela garantit qu’Apache ne crée pas plus de processus enfants que nécessaire.

Un autre paramètre important qui peut aider à augmenter le nombre de processus/threads enfants dans Apache est la directive MaxRequestWorkers. Cette directive spécifie le nombre maximum de requêtes simultanées pouvant être traitées par Apache.

Par défaut, la valeur de MaxRequestWorkers est fixée à 256. Cependant, cette valeur peut être augmentée pour permettre à Apache de traiter plus de requêtes simultanément.

Pour ajuster la valeur de MaxRequestWorkers, vous pouvez ajouter la ligne suivante à votre fichier de configuration Apache :

MaxRequestWorkers 500

Dans l’exemple ci-dessus, nous avons mis la valeur de MaxRequestWorkers à 500, ce qui signifie qu’Apache peut gérer jusqu’à 500 requêtes simultanées.

Il est important de noter que l’augmentation de la valeur de MaxRequestWorkers augmente également la quantité de mémoire utilisée par Apache. Par conséquent, vous devez vous assurer que votre serveur dispose de suffisamment de mémoire pour traiter les demandes supplémentaires

3. Activer la fonction KeepAlive

La fonction KeepAlive permet au client de réutiliser la même connexion au serveur pour plusieurs requêtes, réduisant ainsi la charge de travail liée à la création de nouvelles connexions pour chaque requête. L’activation de la fonction KeepAlive peut améliorer considérablement les performances de votre site web.

Pour activer la fonction KeepAlive, vous devez définir la directive KeepAlive sur On. Vous devez également définir la directive KeepAliveTimeout à une valeur appropriée pour votre site web. Par exemple, pour fixer le délai d’attente de KeepAlive à 15 secondes, vous pouvez ajouter les lignes suivantes à votre fichier de configuration Apache :

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100 

4. Activer la mise en cache

La mise en cache consiste à stocker les données fréquemment consultées dans la mémoire ou sur le disque, ce qui réduit le nombre de requêtes devant être traitées par le serveur. L’activation de la mise en cache peut améliorer considérablement les performances de votre site web, en particulier pour le contenu statique.

Apache fournit plusieurs modules de mise en cache, tels que mod_cache et mod_disk_cache. Pour activer la mise en cache, vous devez charger le module de mise en cache approprié et le configurer dans votre fichier de configuration Apache. Par exemple, pour activer la mise en cache de contenu statique en utilisant mod_disk_cache, vous pouvez ajouter les lignes suivantes à votre fichier de configuration Apache :

LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_disk_cache
CacheDirLevels 2
CacheDirLength 1

Ces lignes activent les modules mod_cache et mod_disk_cache, et configurent la mise en cache du répertoire racine (/) en utilisant le cache disque. La directive CacheRoot spécifie le répertoire dans lequel le contenu mis en cache sera stocké, tandis que CacheDirLevels et CacheDirLength contrôlent la structure de la hiérarchie du répertoire de cache.

5. Utiliser la compression

La compression est le processus qui consiste à réduire la taille des données envoyées sur le réseau en supprimant les informations redondantes. L’activation de la compression peut réduire de manière significative la quantité de données à transmettre, améliorant ainsi les performances de votre site web.

Apache fournit un module de compression appelé mod_deflate. Pour activer la compression, vous devez charger le module mod_deflate et le configurer dans votre fichier de configuration Apache. Par exemple, pour activer la compression pour les contenus textuels, vous pouvez ajouter les lignes suivantes à votre fichier de configuration Apache :

LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json

Ces lignes activent le module mod_deflate et spécifient les types de contenu qui doivent être compressés.

6. Limiter l’accès aux ressources

Limiter l’accès aux ressources peut contribuer à réduire la charge de votre serveur et à améliorer les performances de votre site web. Vous pouvez limiter l’accès aux ressources en utilisant les directives OrderAllow et Deny dans votre fichier de configuration Apache.

Par exemple, pour limiter l’accès à un répertoire appelé admin, vous pouvez ajouter les lignes suivantes à votre fichier de configuration Apache :

<Directory /var/www/html/admin>
    Order deny,allow
    Deny from all
    Allow from 192.168.0.0/24
</Directory>

Ces lignes spécifient que l’accès au répertoire admin doit être refusé à tous les clients sauf ceux du sous-réseau 192.168.0.0/24.

7. Optimiser les ressources du serveur

En plus d’optimiser Apache, vous pouvez également optimiser les ressources du serveur pour garantir une performance et une disponibilité maximales de votre site Web.

a) Augmenter la limite de mémoire et définir Opcache

La limite de mémoire par défaut des scripts PHP peut ne pas être suffisante pour gérer un volume élevé de requêtes entrantes. Vous pouvez augmenter la limite de mémoire en modifiant la directive memory_limit dans votre fichier de configuration PHP.

En outre, vous pouvez également activer Opcache, qui est un cache de bytecode pour les scripts PHP. Opcache stocke des bytecode de script précompilé en mémoire, réduisant les frais généraux d’analyse et de compilation de scripts pour chaque requête.

Installer OPCache
# For CentOS, RedHat and Alma Linux use this command :
$ sudo yum install php-opcache
# For Ubuntu and Debian use this command :
$ sudo apt-get install php-opcache

Une fois l’installation terminée, redémarrez Apache pour appliquer les modifications :

$ sudo systemctl restart apache2

C’est tout! OPcache devrait maintenant être installé et activé sur votre système Ubuntu. Vous pouvez vérifier qu’il est activé en vérifiant votre configuration PHP.

b) Configurer un fichier d’échange ou une partition d’échange

Si votre serveur est à court de mémoire, il peut commencer à utiliser le disque dur comme mémoire virtuelle, ce qui peut réduire considérablement les performances de votre site Web. Vous pouvez éviter cela en configurant un fichier Swap ou une partition Swap, qui fournit de la mémoire virtuelle supplémentaire lorsque la mémoire physique est épuisée.

Pour configurer un fichier d’échange, vous pouvez utiliser les commandes suivantes :

$ sudo fallocate -l 1G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

Ces commandes créent un fichier d’échange de 1 Go, définissent les autorisations de fichier, formatent le fichier en tant qu’échange et activent l’échange.

c) Activer la compression Gzip

Activer la compression GZIP peut réduire la taille des données transmises sur le réseau, améliorant les performances de votre site Web. Vous pouvez activer la compression GZIP en chargeant le module deflate dans Apache et en le configurant dans votre fichier de configuration Apache.

Pour activer la compression GZIP, vous pouvez utiliser les commandes suivantes :

$ sudo a2enmod deflate
$ sudo service apache2 restart

Ces commandes activent le module deflate dans Apache et redémarrent le service Apache. Une fois le module deflate activé, Apache compresse automatiquement le contenu en utilisant GZIP lorsque le client le supporte.

Conclusion

L’optimisation d’Apache pour un trafic élevé n’est pas un processus universel. Cela exige une compréhension approfondie de la charge de travail, un réglage minutieux et une surveillance continue. Les paramètres mentionnés dans cet article sont un bon point de départ, mais vous devrez peut-être les ajuster en fonction de votre situation et de vos besoins particuliers.

Rappelez-vous, bien que l’optimisation d’Apache soit cruciale, ce n’est qu’une pièce du puzzle. La performance globale dépend également d’autres facteurs comme l’infrastructure réseau, la performance des bases de données, l’optimisation des applications, et plus encore.

Laisser un commentaire