Comment puis-je savoir si mon volume EBS subit un micro-bursting et comment puis-je empêcher que cela ne se produise ?

Date de la dernière mise à jour : 17/12/2020

Mon volume Amazon Elastic Block Store (Amazon EBS) ne dépasse pas sa limite de débit (octets/s) ou d'IOPS (ops/s) dans Amazon CloudWatch, mais il semble limité et connaît une latence/longueur de file d'attente élevée. Comment puis-je déterminer si cela se produit à cause du micro-bursting et comment puis-je l'empêcher ?

Brève description

CloudWatch surveille les IOPS (op/s) et le débit (octets/s) des volumes EBS en collectant des échantillons toutes les cinq minutes pour la plupart des volumes. Les volumes IO1 et IO2 prennent en charge une surveillance détaillée qui recueille des échantillons chaque minute.

Le micro-bursting se produit lorsqu'un volume EBS transmet (« bursts ») un IOPS ou un débit élevé sur des périodes significativement plus courtes que celle de collecte. Étant donné que le volume transmet des IOPS ou un débit élevé pendant une période plus courte que la période de collecte, CloudWatch ne renseigne pas sur le bursting.

Exemple : un volume IO1 (période de collecte d'une minute) avec 950 IOPS alloués possède une application qui transmet 1 000 IOPS pendant cinq secondes. Amazon EBS impose des limitations à l'application lorsqu'elle atteint la limite IOPS du volume. À ce stade, le volume ne peut pas gérer la charge de travail, ce qui entraîne une longueur de file d'attente accrue et une latence plus élevée.

CloudWatch n'indique pas que le volume a dépassé la limite d'IOPS car la période de collecte est de 60 secondes. Les IOPS de 1 000 se sont produites pendant seulement 5 secondes. Pendant les 55 secondes restantes de la période de collecte de une minute, le volume est resté inactif. Ainsi, le nombre de VolumeReadOps+VolumeWriteOps sur toute la minute était de 5 000 opérations (1 000*5 secondes). Cela équivaut à une moyenne de 83,33 IOPS sur cette minute (5 000/60 secondes), ce qui n'est généralement pas un problème.

Dans ce cas, le VolumeIdleTime (temps d'inactivité du volume) au même temps d'échantillonnage est de 55 secondes, car le volume était inactif pendant le reste de la période de collecte. Cela signifie que les 5 000 opérations (VolumeReadOps+VolumeWriteOps) à ce temps d'échantillonnage se sont produites en seulement cinq secondes. Calculez la moyenne des IOPS en divisant 5 000 par 5. Cela équivaut à 1 000 IOPS, la limite du volume.

Pour déterminer si un micro-bursting a lieu sur votre volume, procédez comme suit :

  1. Utilisez les métriques CloudWatch pour identifier les éventuels micro-bursting.
  2. Confirmez le micro-bursting à l'aide d'un outil au niveau du système d'exploitation, tel qu'iostat.
  3. Empêchez le micro-bursting en changeant la taille ou le type de votre volume pour qu'il s'adapte à vos applications.

Résolution

Utiliser CloudWatch pour identifier les éventuels micro-bursting

Pour identifier le micro-bursting à l'aide des IOPS (op/s) dans CloudWatch, procédez comme suit :

1.    Vérifiez la métrique VolumeIdleTime (temps d'inactivité du volume).

Si le VolumeIdleTime est élevé, le volume est resté inactif pendant la majeure partie de la période de collecte. Les IOPS suffisamment élevées au même moment de l'échantillonnage indiquent qu'un micro-bursting a pu se produire.

2.    Calculez la moyenne des IOPS.

VolumeReadOpset VolumeWriteOps affichent uniquement le nombre d'opérations d'E/S effectuées au cours de la période de collecte. Pour calculer le nombre moyen d'IOPS atteint lorsque le volume était actif, divisez Somme(VolumeReadOps)+Somme(VolumeWriteOps) par le temps actif du volume, comme indiqué dans la formule suivante :

Moyenne réelle des IOPS en Ops/s = (Somme (VolumeReadOps) + Somme (VolumeWriteOps))/(Période - Somme (VolumeIdleTime))

Remarque : la période de la formule précédente utilise un échantillon à un moment donné dans CloudWatch. La période spécifiée du graphique CloudWatch est égale à la période de collecte du volume.

Si la formule donne une valeur supérieure au nombre maximal d'IOPS pris en charge par le volume, un micro-bursting s'est produit.

Pour identifier un micro-bursting à l'aide du débit (octets/s) dans CloudWatch, procédez comme suit :

1.    Vérifiez la métrique VolumeIdleTime (temps d'inactivité du volume).

2.    Utilisez la formule suivante pour calculer le débit moyen :

Débit moyen réel en octets/s = (Somme(VolumeReadBytes) + Somme(VolumeWriteBytes))/(Période - Somme (VolumeIdleTime))

Remarque : la période de la formule précédente utilise un échantillon à un moment donné dans CloudWatch. La période spécifiée du graphique CloudWatch est égale à la période de collecte du volume.

Si la formule donne une valeur supérieure au débit maximal pris en charge par le volume, c'est qu'il y a eu micro-bursting.

Confirmez le micro-bursting à l'aide d'un outil au niveau du système d'exploitation, tel qu'iostat

Les formules précédentes n'identifient pas toujours le micro-bursting en temps réel. Cela est dû au fait que le volume peut être micro-bursting même si le VolumeIdleTime est faible.

Exemple : votre volume atteint un niveau dépassant les limites. Le volume se réduit alors à un niveau d'activité très faible sans être complètement inactif pendant le reste de la période de collecte. La métrique VolumeIdleTime ne reflète pas la faible activité, même si un micro-bursting s'est produit.

Pour confirmer le micro-bursting, utilisez un outil au niveau du système d'exploitation disposant d'une granularité plus précise que CloudWatch, tel qu'iostat. Pour plus d'informations sur iostat, consultez iostat(1) sur la page de manuel Linux.

1.    Exécutez la commande suivante à l'aide d'iostat pour signaler les statistiques d'E/S pour tous vos volumes montés avec une granularité d'une seconde :

iostat -xdmzt 1

Remarque : l'outil iostat fait partie du paquet sysstat. Si vous ne trouvez pas la commande iostat, exécutez la commande suivante pour installer sysstat sur les AMI Amazon Linux.

$ sudo yum install sysstat -y

2.    Pour déterminer si vous atteignez la limite de débit, passez en revue les RMo/s et WMo/s dans la sortie. Si RMo/s + WMo/s est supérieur au débit maximal du volume, une micro-éclatement se produit.

Pour déterminer si vous atteignez la limite d'IOPS, vérifiez les r/s et w/s dans la sortie. Si r/s + w/s est supérieur aux IOPS maximales du volume, un micro-bursting se produit.

Empêchez le micro-bursting en changeant la taille ou le type de votre volume pour qu'il s'adapte à vos applications

Modifiez le volume en un type/taille qui répond aux IOPS et au débit requis. Pour plus d'informations sur les types de volumes et leurs limites d'IOPS et de débit respectives, consultez Types de volumes Amazon EBS. Gardez à l'esprit que l'instance ne peut transmettre qu'un certainseuil d'IOPS et de débit à tous les volumes EBS associés.

C'est une bonne pratique de comparer vos volumes à votre charge de travail afin de vérifier quels types de volumes s'adaptent en toute sécurité à votre charge de travail dans un environnement de test. Pour plus d'informations, consultez la section Évaluation des volumes EBS.</p


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?