![optimisation la configuration d'Apache pour un site web à fort trafic](https://www.webhi.com/how-to/gilrogre/2023/05/apache_optimize_fr.jpg)
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 : prefork
, worker
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 Order
, Allow
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.