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

Dernière mise à jour : 05-12-2022

J'ai un volume Amazon Elastic Block Store (Amazon EBS) qui ne dépasse pas sa limite de débit ou d'IOPS dans Amazon CloudWatch. Mais le volume semble limité et connaît une latence/une longueur de file d'attente élevée.

Brève description

CloudWatch surveille les IOPS (op/s) et le débit (octets/s) en collectant des échantillons toutes les minutes, pour tous les types de volumes Amazon EBS.

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. 1 000 IOPS 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 5000 opérations (1000*5 secondes). Cela équivaut à une moyenne de 83,33 IOPS en une minute (5000/60 secondes). Cette moyenne n'est généralement pas préoccupante.

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. Si vous divisez 5 000 par 5 pour calculer la moyenne des IOPS, vous obtenez 1 000 IOPS. La limite de volume est de 1 000 IOPS.

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. Utilisez CloudWatch pour obtenir l'événement de micro-éclatement.
  3. Confirmez le micro-bursting à l'aide d'un outil au niveau du système d'exploitation.
  4. Empêchez le micro-bursting en changeant la taille ou le type de votre volume pour qu'il s'adapte à vos applications.

Solution

Utilisez les métriques CloudWatch pour identifier les éventuels micro-bursting

1.    Vérifiez la métrique VolumeIdleTime (temps d'inactivité du volume). Cette métrique indique le nombre total de secondes pendant une période spécifiée lorsqu'aucune opération de lecture ou d'écriture n'est soumise. Si le VolumeIdleTime est élevé, le volume est resté inactif pendant la majeure partie de la période de collecte. Des IOPS ou un débit suffisamment élevés au même moment de l'échantillonnage indiquent qu'un micro-éclatement est susceptible de se produire.

La métrique VolumeIdleTime pour le débit comprend les métriques VolumeReadBytes et VolumeWriteBytes.

2.    Utilisez la formule suivante pour calculer le débit moyen atteint lorsque le volume est actif :

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

Avec la métrique VolumeIdleTime pour les IOPS, il existe des métriques VolumeReadOps et VolumeWriteOps.

3.    Utilisez la formule suivante pour calculer le nombre moyen d'IOPS par seconde atteint lorsque le volume est actif :

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

Utilisez CloudWatch pour obtenir un événement de micro-explosion

  1. Ouvrez la console CloudWatch.
  2. Choisissez Toutes les métriques.
  3. Utilisez l'ID du volume pour rechercher le volume concerné.
  4. Pour afficher les indicateurs de débit, choisissez Browse, puis ajoutez VolumeReadBytes, VolumeWriteBytes et VolumeIdleTime.
  5. Choisissez Graphed metrics.
  6. Pour Statistiques, choisissez Somme, et pour Période, choisissez 1 minute.
  7. Pour Ajouter des mathématiques, choisissez Commencer par une expression vide.
  8. Dans les détails de l'expression, entrez les identifiants du graphique pour la formule du débit moyen réel en octets/s. Par exemple, (m1+m2)/(60-m3).

Si la formule calcule une valeur supérieure au débit maximal pris en charge par le volume, c'est qu'il y a eu micro-bursting. Pour vérifier les statistiques d'IOPS, suivez les étapes précédentes et ajoutez VolumeReadOps, VolumeWriteOps et VolumeIdleTime pour l'étape 4.

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

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.

Linux

Utilisez la commande iostat. Pour plus d'informations, consultez iostat(1) sur la page de manuel Linux.

1.    Pour signaler les statistiques d'E/S pour tous vos volumes montés avec une granularité d'une seconde, exécutez la commande suivante :

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.

Windows

Exécutez la commande perfmon dans Windows Performance Monitor. Pour plus d'informations, voir Déterminer vos besoins en matière d'E/S par seconde et de débit.

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 et 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. L'instance ne peut transmettre qu'un certain seuil 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 en savoir plus, consultez la section Évaluation des volumes EBS.


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


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