[UPDATE] Analyser et surveiller les performances d’un serveur
Ce billet va détailler de façon précise quels compteurs de l’analyseur de performances doivent être monitorés afin de diagnostiquer un serveur d’un point de vue stockage, processeur, mémoire, etc… pour déceler un problème ou un éventuel goulot d’étranglement, par exemple.
Analyser les performances du stockage
- % d’inactivité => désigne la charge de travail => une valeur en-dessous de 20 % indique une surcharge probable.
- E/S partagées/s => désigne le taux de requête disque physique découpée en plusieurs requêtes pendant une intervalle. Il convient d’appliquer la formule suivante:
- ( E/S partagées/s) / Transfert disques/s) * 100 => une valeur au-delà de 20 % indique une fragmentation importante
- Lecture disque/s et Ecriture disque/s => désigne le nombre IOPS
- Longueur moyenne de file d’attente du disque => désigne le nombre de requête I/O => la valeur doit être inférieure à 2 sinon il existe un goulot d’étranglement => rajouter des disques à la pile RAID (si la valeur est supérieure au nombre de piles plus deux, cela signifie que le disque lui-même peut constituer le goulot d’étranglement)
- Moyenne disque s/écriture et Moyenne disque s/lecture et Moyenne disque s/transfert => Ce compteur mesure, en secondes, le temps moyen nécessaire pour lire les données du disque (temps d’accès) => la valeur doit être comprise entre 0 et 25 ms, maximum 10ms pour un serveur SQL. Si le chiffre est supérieur à 25 millisecondes (ms), cela signifie que le système de disque a des problèmes de latence lorsqu’il lit du disque.
- Octet disque/s => désigne le débit
- Mémoire\Octets du cache => Ce compteur indique la quantité de mémoire utilisée pour le cache du système de fichiers. Il peut y avoir un goulot d’étranglement de disque si cette valeur est supérieure à 200 Mo
- Pourcentage du temps de lecture/écriture du disque => désigne le Pattern I/O
- Transfert disque/s => désigne la charge IOPS
Analyser les performances de la mémoire
Un manque de mémoire est généralement dû à une insuffisance de mémoire RAM, une fuite de mémoire ou un commutateur de mémoire placé dans le fichier boot.ini. Avant d’aborder les compteurs de mémoire, je voudrais évoquer le commutateur /3GB.
Une augmentation de la mémoire réduit l’activité d’E/S de disque, ce qui entraîne une amélioration des performances des applications. Le commutateur /3GB a été introduit dans Windows NT® pour fournir davantage de mémoire aux programmes en mode utilisateur.
Windows utilise un espace d’adressage virtuel de 4 Go (quelle que soit la quantité de mémoire RAM physique du système). Par défaut, les 2 Go inférieurs sont réservés aux programmes en mode utilisateur et les 2 Go supérieurs aux programmes en mode noyau. Avec le commutateur /3GB, 3 Go sont octroyés aux processus en mode utilisateur. Ceci, bien sûr, se fait au détriment de la mémoire du noyau qui aura seulement 1 Go d’espace d’adressage virtuel. Ceci peut causer des problèmes parce que les Octets de réserve non paginée, Octets de réserve paginée, Entrées libres en table des pages système, et le segment du Bureau sont tous compressés dans cet espace de 1 Go. Vous ne devriez donc utiliser le commutateur /3GB qu’après avoir effectué des tests approfondis dans votre environnement.
Cette solution est à considérer si vous soupçonnez un goulot d’étranglement lié à la mémoire. Si le commutateur /3GB n’est pas la cause des problèmes, vous pouvez utiliser les compteurs suivants pour diagnostiquer un goulot d’étranglement de mémoire potentiel.
- % temps processeur => désigne la charge du processeur => une valeur au-delà de 80 % nécessite une surveillance accrue => un CPU peut être sollicité (dans la cadre d’une virtualisation par exemple) à hauteur de 75 à 90 % mais en surveillant bien entendu l’évolution
- Longueur de la file du processeur => désigne la file d’attente des threads du processeur => une valeur entre 5 et 10 indique une charge importante et au-delà une surcharge/saturation des performances processeur
- Pages/s => désigne la mémoire paginée transférée de la mémoire vive vers le système disque. Il convient d’appliquer la formule suivante:
- Pages/s / Transfert disque/s => une valeur au-delà de 50% nécessite l’ajout de mémoire dans le système car le système consomme de la « puissance » disque uniquement pour la pagination (mesure la vitesse à laquelle les pages sont lues du disque ou écrites sur disque pour corriger les défauts des pages matérielles. Si la valeur est supérieure à 1 000, suite à une pagination excessive, il peut y avoir une fuite de mémoire)
- Mégaoctets disponibles => désigne la mémoire vive disponible immédiatement (si cette valeur est inférieure à 5 % de la mémoire RAM physique totale, cela signifie qu’il y a une insuffisance de mémoire, ce qui risque d’accroître l’activité de pagination)
- Entrées libres en table des pages système => ce compteur indique le nombre d’entrées de la table de pagination qui ne sont pas actuellement utilisées par le système. Si ce nombre est inférieur à 5 000, il est fort possible que vous ayez une fuite de mémoire
- Octets validés => désigne le volume mémoire alloué réservé. Il convient d’appliquer la formule suivante:
- Octets validés / Mémoire installée => un ratio supérieur à 1.5 nécessitera un ajout de mémoire vive et une valeur de 1 indique qu’il convient de surveiller le système car le montant de la mémoire virtuelle « équivaut » à la mémoire vive installée (Ce compteur mesure le rapport octets validés/limite de mémoire dédiée soit la quantité de mémoire virtuelle utilisée. Il indique une mémoire insuffisante si le chiffre est supérieur à 80 %)
Analyser les performances du processeur
- % temps processeur => mesure le pourcentage de temps que le processeur passe à exécuter un thread actif. Si le pourcentage est supérieur à 85 %, cela signifie que le processeur est surchargé et que le serveur peut nécessiter un processeur plus rapide
- % temps utilisateur => mesure le pourcentage de temps que le processeur passe en mode utilisateur. Si cette valeur est élevée, cela signifie que le serveur est occupé par l’application. Une solution possible consiste à optimiser l’application qui utilise trop les ressources du processeur
- % temps d’interruption => mesure le temps que le processeur passe à recevoir et à traiter des interruptions matérielles durant des intervalles d’échantillonnage spécifiques. Ce compteur indique la possibilité d’un problème de matériel si la valeur est supérieure à 15 %
- Longueur de la file d’attente du processeur => indique le nombre de threads existant dans la file d’attente du processeur. Le serveur ne reçoit pas suffisamment de puissance processeur si la valeur est plus de deux fois supérieure au nombre de processeurs pendant un certain temps
Analyser les performances du réseau
- Total des octets/s => mesure la vitesse à laquelle les octets sont envoyés et reçus via chaque carte réseau, y compris les caractères de trame. Le réseau est saturé si vous découvrez que plus de 70 % de l’interface sont en utilisation. Pour une carte de 100 Mbits/s, l’interface utilisée est 8,7 Mo/s (100 Mbits/s = 100 000 Kbits/s = 12,5 Mo/s* 70 %). Dans une telle situation, vous devriez ajouter une carte réseau plus rapide ou segmenter le réseau
- Longueur de la file d’attente de sortie => mesure la longueur de la file d’attente de sortie, en paquets. Il y a saturation du réseau si la valeur est supérieure à 2. Vous pouvez résoudre ce problème en ajoutant une carte réseau plus rapide ou en segmentant le réseau
Analyser les performances processus
- Nombre de handles => mesure le nombre total de handles qui sont actuellement ouverts par un processus. Ce compteur indique la possibilité d’une fuite de handles si le nombre est supérieur à 10 000
- Nombre de threads => mesure le nombre de threads actuellement actifs dans un processus. Il peut y avoir une fuite de thread si ce nombre est supérieur à 500 entre le nombre minimum et maximum de threads
- Octets privés => indique la quantité de mémoire allouée au processus qui ne peut pas être partagée avec d’autres processus. Si la valeur est supérieure à 250 entre le nombre minimum et maximum de threads, il est possible qu’il y ait une fuite de mémoire
Je me suis basé, en plus de mon expérience 😉 , sur cet article pour rédiger ce billet.
Disque physique\% temps d’inactivité Ce compteur mesure le pourcentage de temps durant lequel le disque était inactif pendant l’intervalle d’échantillonnage. Si ce compteur descend en dessous de 20 %, cela signifie que le système de disque est saturé. Vous pouvez envisager de remplacer le système de disque actuel par un système de disque plus rapide.
Je travaille actuellement en tant qu’Enterprise Architect pour le groupe CAPGEMINI. Acteur et expert communautaire reconnu depuis de nombreuses années, j’anime ce site autour des technologies Microsoft, des thématiques du Cloud, des infrastructures, … Je suis également à l’origine de nombreuses publications dans la presse IT.
Bonjour… Ton site est très complet. je voulais tout juste des
informations sur le sujet. Bon courage!