Apache, le logiciel de serveur web le plus populaire au monde, alimente environ 30,2 % de tous les sites web actifs. Connu pour sa fiabilité, sa flexibilité et ses fonctionnalités robustes, Apache est la colonne vertébrale d’Internet depuis des décennies. Des petits blogs personnels aux grandes plateformes de commerce électronique, la polyvalence d’Apache lui permet de gérer une large gamme d’applications web avec aisance. Dans ce blog, nous allons examiner le fonctionnement interne du serveur web Apache, explorer les métriques essentielles pour la surveillance d’Apache et découvrir des stratégies d’optimisation pour assurer que votre serveur web fonctionne à son efficacité maximale.
Comment fonctionne le serveur web Apache ?
Bien que les serveurs web impliquent des processus complexes, leur fonction fondamentale reste constante : accepter les requêtes entrantes et livrer les composants de la page web correspondante en réponse. Apache se distingue dans cet aspect en permettant une communication sécurisée client-serveur via HTTP/HTTPS. La configuration d’Apache est gérée via ses fichiers de configuration, où les modules jouent un rôle clé dans le contrôle de son comportement. Ces modules polyvalents peuvent être adaptés pour des tâches comme la mise en cache, le cryptage, la réécriture d’URL, et plus encore.
C’est ici qu’Apache brille véritablement : il écoute les requêtes entrantes en utilisant la directive Listen. Cette directive spécifie le port sur lequel Apache doit attendre les connexions entrantes. Par défaut, Apache utilise le port 80 avec la directive Listen, mais il peut être configuré pour écouter sur différents ports pour des domaines individuels, permettant ainsi d’héberger plusieurs sites web sur un seul serveur. Lorsque le message atteint sa destination avec succès, le protocole TCP/IP sous-jacent reconnaît le transfert de données réussi.
Métriques essentielles d’Apache : Que surveiller et pourquoi
Métriques de performance
-
Temps de traitement des requêtes : Des temps de traitement lents peuvent indiquer des goulots d’étranglement au sein de votre pile d’applications web. Parfois, Apache n’est pas le principal responsable. Cela peut être dû à des requêtes de base de données lentes, à une exécution lente du code PHP, ou à des limitations de ressources sur le serveur. En surveillant le temps de traitement des requêtes, vous pouvez isoler les problèmes et identifier le composant spécifique à l’origine des retards.
Actions à entreprendre en fonction du temps de traitement
Temps de traitement élevé
- Enquêter sur les autres composants : Analysez les requêtes de base de données, l’exécution du code PHP, et l’utilisation globale des ressources du serveur pour identifier la source exacte du ralentissement.
- Examiner KeepAliveTimeout : Un KeepAliveTimeout élevé peut maintenir les threads de travail occupés pendant de longues périodes, même lorsque les clients n’utilisent pas activement la connexion. Le réduire prudemment peut libérer des threads de travail et améliorer la réactivité, mais faites attention aux inconvénients potentiels, comme des rétablissements de connexion plus fréquents.
Temps de traitement faible
- Rechercher de faux positifs : Des temps de traitement extrêmement bas ne sont pas toujours idéaux. Cela peut indiquer que vos pages manquent de contenu dynamique ou de fonctionnalités de base. Analysez si le contenu servi répond aux exigences de votre site web. Comprenez si vos pages statiques sont censées être simples ou si elles devraient avoir plus d’éléments dynamiques.
- Examiner les pratiques d’optimisation : Des temps de traitement très bas après des optimisations suggèrent une sur-optimisation potentielle. Il est impératif d’évaluer si des optimisations inutiles peuvent être réduites, afin d’atteindre un équilibre entre performance et utilisation efficace des ressources.
-
Requêtes par minute : Le nombre de requêtes par minute (RPM) que peut gérer Apache dépend de divers facteurs comme le matériel du serveur, la configuration, et la nature des requêtes. Bien qu’Apache puisse théoriquement traiter des centaines voire des milliers de RPM, le nombre réel dépend de votre configuration et de votre charge de travail. Des facteurs tels que la taille des requêtes, la complexité du code côté serveur et les ressources système disponibles contribuent à déterminer sa véritable capacité.
Surveiller le RPM d’Apache peut aider à identifier les situations qui nécessitent votre attention immédiate. En suivant le RPM, vous pouvez obtenir des informations précieuses sur la santé de votre serveur. Une augmentation constante du RPM peut indiquer que votre serveur approche de sa capacité et pourrait bénéficier de ressources supplémentaires (CPU, mémoire) pour maintenir des performances optimales. À l’inverse, une baisse soudaine du RPM peut être un signal d’alarme pour des problèmes côté serveur, tels qu’un échange de disque excessif ou des pannes de base de données. En surveillant le RPM et en comprenant ses implications, vous pouvez identifier les problèmes potentiels tôt et prendre des mesures pour y remédier avant qu’ils n’affectent vos utilisateurs.
-
Disponibilité : Il est historiquement prouvé que les pannes tendent à avoir un effet extrême sur les utilisateurs finaux, c’est pourquoi la surveillance de la disponibilité d’Apache est primordiale. Plusieurs mesures peuvent être prises pour assurer une haute disponibilité de votre serveur Web Apache :
-
a) Répartition de charge : Répartissez le trafic entrant sur plusieurs serveurs Apache, évitant ainsi la surcharge d’un seul serveur. Cela assure un service continu même si un serveur rencontre des problèmes.
-
b) Clustering : Configurez plusieurs serveurs Apache pour fonctionner ensemble en tant que cluster. En cas de panne de serveur, un autre serveur peut prendre le relais de manière transparente pour minimiser les temps d’arrêt.
-
c) Maintenance et mises à jour régulières : Planifiez des tâches de maintenance régulières telles que les mises à jour logicielles et les correctifs de sécurité. Effectuez ces tâches pendant les heures creuses pour minimiser les perturbations.
De plus, la mise en place d’un outil de surveillance optimal pour serveur Apache peut vous aider à avoir une visibilité sur la disponibilité et la santé globales de votre serveur web périodiquement, garantissant ainsi ses performances optimales.
Métriques de ressources
- Les métriques des ressources de travail représentent les processus ou threads responsables de la gestion des requêtes entrantes. Surveiller ces métriques, telles que les travailleurs occupés et inactifs, vous aidera à comprendre si vos ressources sont sous-utilisées ou surutilisées.
-
Travailleurs inactifs : Un petit nombre de travailleurs inactifs est généralement acceptable car ils indiquent une certaine capacité de réserve pour gérer les pics de trafic soudains. Cependant, un nombre excessif de travailleurs inactifs peut consommer des ressources mémoire et CPU sans contribuer à la gestion des ressources.
-
Travailleurs occupés : Lorsque tous les travailleurs sont occupés à traiter des requêtes, les requêtes entrantes peuvent être mises en file d’attente, entraînant des temps de réponse plus longs. Cela peut dégrader l’expérience utilisateur. L’optimisation de la directive MaxRequestWorkers permet de s’assurer que le serveur peut gérer la charge de travail prévue sans mettre trop de requêtes en file d’attente.
- Connexions : Surveiller les connexions de votre serveur web Apache est essentiel pour maintenir les performances, identifier les problèmes potentiels et assurer la bonne santé générale du serveur. Voici comment le suivi des différents types de connexions fournit des informations précieuses :
- Comprendre la charge du serveur : Suivre les connexions totales et asynchrones vous aidera à avoir une idée générale de la charge du serveur et à identifier si les opérations asynchrones consomment des ressources excessives.
- Optimiser l’utilisation des ressources : Les connexions d’écriture sont utilisées pour renvoyer des données aux clients. Suivre leur volume permet d’évaluer l’utilisation de la bande passante et d’identifier les goulots d’étranglement potentiels. Par exemple, si les connexions d’écriture atteignent régulièrement leur maximum, cela pourrait indiquer une bande passante insuffisante ou des inefficacités dans le code serveur entraînant un transfert de données lent.
- Améliorer l’expérience utilisateur : Les connexions keep-alive permettent l’envoi de plusieurs requêtes via une seule connexion, réduisant ainsi la surcharge du handshake et améliorant les performances. Suivre cela permet de s’assurer que les connexions fonctionnent correctement et contribuent à des temps de réponse plus rapides.
- Déboguer et résoudre les problèmes : La surveillance des taux de fermeture des connexions aide à identifier des problèmes potentiels tels que des déconnexions client soudaines ou des erreurs côté serveur qui pourraient interrompre prématurément les connexions. Un taux élevé de fermeture sans résiliation correcte pourrait indiquer des bugs d’application ou des problèmes de connectivité réseau.
Métriques système
Charge système : Surveiller la charge système dans le serveur web Apache est crucial pour des performances optimales et une gestion efficace des requêtes. La charge système indique la charge de travail sur le CPU du serveur, représentant le nombre moyen de processus dans un état exécutable ou non interrompable. Les moyennes de charge sont calculées sur différents intervalles de temps (une, cinq et quinze minutes) pour comprendre avec précision le comportement du système.
La surveillance du serveur Apache aide à identifier une charge système élevée, ce qui suggère souvent une forte demande, pouvant entraîner des temps de réponse plus lents. Cette métrique est souvent utilisée pour identifier les goulots d’étranglement, planifier des mises à jour ou des extensions, et s’assurer que le serveur fonctionne dans ses limites de capacité.
Comparer les serveurs web les plus populaires : Apache vs. Nginx vs. IIS
Apache est souvent comparé à d’autres serveurs web populaires comme IIS et Nginx, chacun ayant ses avantages uniques. Le choix d’un serveur web, qu’il s’agisse d’Apache, Nginx ou IIS, dépend généralement de vos besoins et priorités spécifiques. Cependant, il est important de prendre en compte certains facteurs avant de faire votre choix : l’architecture de base, les performances, la configuration, la sécurité, et bien plus encore. Voici un aperçu qui vous aidera à décider :
Fonctionnalité |
Apache |
Nginx |
IIS |
Vue d’ensemble |
Apache est un logiciel libre qui traite les requêtes des clients et sert le contenu web via HTTP/HTTPS. C’est un composant de la pile LAMP, qui assure la compatibilité avec un large éventail de langages de programmation, de systèmes de gestion de contenu et de cadres web. |
Nginx est un serveur web populaire qui fait office de serveur proxy inverse, d’équilibreur de charge et de cache HTTP/HTTPS. Initialement conçu pour résoudre le problème C10K, ce serveur web est réputé pour sa capacité à gérer de gros volumes de trafic et à évoluer efficacement avec un minimum de matériel. C’est un composant clé de la pile web LEMP, qui est une alternative à la configuration LAMP.
|
Créé par Microsoft pour être utilisé sur les serveurs Windows, IIS prend en charge divers protocoles tels que HTTP, HTTPS, FTP, SMTP et autres, ce qui le rend polyvalent pour différents services web. Il offre également des fonctionnalités telles que des mesures de sécurité intégrées, le filtrage des requêtes, des pools d’applications pour la gestion des applications web, etc. |
Gestion des connexions |
Apache crée un seul thread et plusieurs processus pour traiter chaque demande de connexion. Cependant, cela entraîne une forte consommation de ressources, ce qui a un impact sur la vitesse. Pour éviter cela, Apache fournit divers modules multiprocessus (MPM) tels que mpm_prefork, mpm_worker et mpm_event qui déterminent comment les requêtes HTTP peuvent être acceptées et traitées. |
Nginx utilise une architecture maître-ouvrier pour gérer les connexions. Ce modèle événementiel s’appuie sur la boucle événementielle pour gérer les connexions sans créer de nouveaux threads pour chacune d’entre elles. Cela permet à Nginx de traiter plusieurs requêtes simultanément, ce qui le rend idéal pour les sites web à fort trafic et les réseaux de diffusion de contenu populaires tels que MaxCDN, Cloudflare, etc. |
IIS suit un modèle flexible de processus de travailleur dans lequel vous pouvez configurer le nombre de processus de travailleur pour optimiser l’utilisation des ressources et les performances. |
Configuration et sécurité |
Les serveurs web Apache utilisent des fichiers .htaccess pour la configuration par répertoire, ce qui permet aux utilisateurs non privilégiés de contrôler les paramètres spécifiques du site web sans avoir un accès direct aux fichiers de configuration principaux. Apache assure également la sécurité du serveur web en mettant en œuvre des paramètres de configuration pour prévenir les attaques DoS. |
Les configurations au niveau de l’annuaire ne sont pas prises en charge par Nginx. Bien que Nginx offre des fonctions de sécurité par défaut, sa version premium, Nginx Plus, renforce la sécurité en permettant de gérer plusieurs sites web et applications à l’aide d’un seul ensemble d’informations d’identification. |
IIS s’appuie sur un outil d’administration central pour la configuration, offrant un contrôle plus granulaire mais nécessitant des privilèges administratifs. Outre la prévention des attaques par déni de service, IIS prend également en charge des fonctions telles que le filtrage des requêtes et l’authentification des utilisateurs pour une sécurité accrue. |
Avantages et inconvénients |
Apache bénéficie d’un soutien important de la part de la communauté, d’une sécurité renforcée et d’une grande flexibilité au niveau des modules. Cependant, il présente des inconvénients, notamment celui d’être gourmand en ressources et d’avoir des exigences de configuration complexes. |
Nginx est apprécié pour sa rapidité et son efficacité en tant que serveur proxy inverse. Comme il s’agit d’un serveur basé sur les événements, il permet de hautes performances et une mise à l’échelle. Le support limité de la plateforme et de la communauté est un inconvénient. |
IIS s’intègre facilement aux services Microsoft tels que Active Directory, Microsoft SQL, etc. Cependant, il n’est pas aussi personnalisable que les serveurs web open-source. |
Coût |
Apache est un serveur web libre et gratuit qui ne requiert aucun droit de licence. |
Nginx est un serveur web libre et gratuit. |
IIS est fourni avec une licence Windows Server. |
Quel que soit le serveur web que vous choisissez, Applications Manager propose une solution complète pour surveiller et gérer votre infrastructure web. Avec le support d’Apache, Nginx, IIS et d’autres serveurs web populaires, Applications Manager offre des informations en temps réel sur les principales métriques de performance, l’utilisation des ressources, la disponibilité, et bien plus encore. Pour découvrir comment notre produit peut vous aider, téléchargez un essai gratuit de 30 jours ou planifiez une démonstration personnalisée avec l’un de nos experts dès aujourd’hui !
Source : How to monitor Apache web server performance metrics rédigé par Varsha R