Wie kann ich feststellen, ob mein Amazon-EBS-Volume Micro-Bursting verursacht, und dies ggf. verhindern?

Lesedauer: 6 Minute
0

Ich habe ein Amazon Elastic Block Store (Amazon EBS)-Volume, das seine Durchsatz- oder IOPS-Grenze in Amazon CloudWatch nicht überschreitet. Das Volume scheint jedoch gedrosselt zu sein und weist eine hohe Latenzzeit und Warteschlangenlänge auf.

Kurzbeschreibung

CloudWatch überwacht die IOPS (op/s) und den Durchsatz (byte/s) für alle Amazon-EBS-Volume-Typen anhand von Stichproben im Minutentakt.

Micro-Bursting tritt auf, wenn ein EBS-Volume hohe IOPS-Werte oder einen hohen Durchsatz für Zeiträume aufweist, die deutlich kürzer sind als der Erfassungszeitraum. Da der Zeitraum, in dem das Volume hohe IOPS oder einen hohen Durchsatz aufweist, kürzer ist als der Erfassungszeitraum, zeigt CloudWatch das Bursting nicht an.

**Beispiel:**Ein IO1-Volume (Erfassungszeitraum von einer Minute) mit 950 bereitgestellten IOPS führt eine Anwendung aus, die fünf Sekunden lang 1.000 IOPS überträgt. Amazon EBS drosselt die Anwendung, wenn sie die IOPS-Grenze des Volumes erreicht. An diesem Punkt kann das Volume den Workload nicht mehr bewältigen, was zu einer längeren Warteschlange und höheren Latenzzeiten führt.

CloudWatch zeigt nicht an, dass das Volume die IOPS-Grenze überschritten hat, da der Erfassungszeitraum 60 Sekunden beträgt. Die 1.000 IOPS traten nur 5 Sekunden lang auf. In den verbleibenden 55 Sekunden des einminütigen Erfassungszeitraums bleibt das Volume im Leerlauf. Dies bedeutet, dass die Anzahl der VolumeReadOps+VolumeWriteOps über die gesamte Minute hinweg 5000 Operationen (1000*5 Sekunden) beträgt. Dies entspricht einem Durchschnitt von 83,33 IOPS über eine Minute (5000/60 Sekunden). Dieser Durchschnittswert ist in der Regel unbedenklich.
In diesem Fall beträgt die VolumeIdleTime zum selben Abfragezeitpunkt 55 Sekunden, da das Volume für den Rest des Erfassungszeitraums inaktiv ist. Dies bedeutet, dass die 5.000 Operationen (VolumeReadOps+VolumeWriteOps) zu diesem Abfragezeitpunkt nur über fünf Sekunden ausgeführt werden. Wenn Sie 5.000 durch 5 teilen, um die durchschnittlichen IOPS zu berechnen, erhalten Sie 1.000 IOPS. 1.000 IOPS ist die Grenze des Volumes.

Um festzustellen, ob auf Ihrem Volume Micro-Bursting auftritt, gehen Sie wie folgt vor:

  1. Verwenden Sie CloudWatch-Metriken, um mögliche Micro-Bursts zu identifizieren.
  2. Verwenden Sie CloudWatch, um das Micro-Bursting-Ereignis zu erhalten.
  3. Bestätigen Sie Micro-Bursting mit einem Tool auf Betriebssystemebene.
  4. Verhindern Sie Micro-Bursting, indem Sie die Größe oder den Typ des Volumes an Ihre Anwendungen anpassen.

Lösung

Verwenden von CloudWatch-Metriken, um mögliche Micro-Bursts zu identifizieren

  1. Überprüfen Sie die Metrik VolumeIdleTime. Diese Metrik gibt die Gesamtzahl der Sekunden innerhalb eines bestimmten Zeitraums an, für die keine Lese- oder Schreibvorgänge durchgeführt werden. Wenn die VolumeIdleTime hoch ist, war das Volume für den größten Teil des Erfassungszeitraums inaktiv. Ausreichend hohe IOPS oder ein hoher Durchsatz zum gleichen Zeitpunkt deuten darauf hin, dass möglicherweise Micro-Bursting aufgetreten ist.
    Neben der Metrik VolumeIdleTime für den Durchsatz sind die Metriken VolumeReadBytes und VolumeWriteBytes verfügbar.
  2. Verwenden Sie die folgende Formel, um den durchschnittlichen Durchsatz zu berechnen, der erreicht wird, wenn das Volume aktiv ist:
    Geschätzter durchschnittlicher Durchsatz in Bytes/s = (Summe(VolumeReadBytes) + Summe(VolumeWriteBytes) ) / (Zeitraum - Summe(VolumeIdleTime) )
    Neben der Metrik VolumeIdleTime für IOPS sind die Metriken VolumeReadOps und VolumeWriteOps verfügbar.
  3. Verwenden Sie die folgende Formel, um die durchschnittlichen IOPS zu berechnen, die erreicht werden, wenn das Volume aktiv ist:
    Geschätzte durchschnittliche IOPS in Ops/s = (Summe(VolumeReadOps) + Summe(VolumeWriteOps) ) / ( Zeitraum - Summe(VolumeIdleTime) )

Verwenden von CloudWatch, um das Micro-Bursting-Ereignis zu erhalten

  1. Öffnen Sie die CloudWatch-Konsole.
  2. Wählen Sie Alle Metriken.
  3. Verwenden Sie die Volume-ID, um nach dem betroffenen Volume zu suchen.
  4. Um Durchsatzmetriken anzuzeigen, wählen Sie Durchsuchen und fügen Sie dann VolumeReadBytes, VolumeWriteBytes und VolumeIdleTime hinzu.
  5. Wählen Sie Grafisch dargestellte Metriken.
  6. Wählen Sie für Statistiken die Option Summe und stellen Sie den Zeitraum auf 1 Minute ein.
  7. Wählen Sie für Math. hinzufügen die Option Mit leerem Ausdruck beginnen.
  8. Geben Sie als Details für den Ausdruck die Diagramm-IDs für die Formel des geschätzten durchschnittlichen Durchsatzes in Bytes/s ein. Zum Beispiel (m1+m2)/(60-m3).

Wenn die Formel einen Wert errechnet, der größer ist als der maximale Durchsatz für das Volume, dann ist Micro-Bursting aufgetreten. Um die IOPS-Metriken zu überprüfen, gehen Sie vor wie oben beschrieben und fügen Sie im Schritt 4 VolumeReadOps, VolumeWriteOps und VolumeIdleTime hinzu.

Bestätigen von Micro-Bursting mit einem Tool auf Betriebssystemebene

Mit den oben angegebenen Formeln lässt sich Micro-Bursting nicht immer in Echtzeit erkennen. Dies liegt daran, dass ein Volume auch bei niedriger VolumeIdleTime Micro-Bursting aufweisen kann.

**Beispiel:**Ihr Volume erreicht einen Wert, der die Grenze des Volumes überschreitet. Das Volume kehrt anschließend auf ein sehr niedriges Aktivitätsniveau zurück, befindet sich für den Rest des Erhebungszeitraums aber nicht vollständig im Leerlauf. Die Metrik VolumeIdleTime spiegelt die geringe Aktivität nicht wider, obwohl Micro-Bursting aufgetreten ist.

Um Micro-Bursting zu bestätigen, verwenden Sie ein Tool auf Betriebssystemebene, das eine feinere Granularität bietet als CloudWatch.

Linux

Verwenden Sie den Befehl iostat. Weitere Informationen finden Sie auf der Linux-Handbuchseite unter iostat(1).

1.Um I/O-Statistiken für alle gemounteten Volumes mit einer Granularität von einer Sekunde zu erstellen, führen Sie den folgenden Befehl aus:

iostat -xdmzt 1

**Hinweis:**Das Tool iostat ist Teil des sysstat-Pakets. Wenn Sie den Befehl iostat nicht finden können, führen Sie den folgenden Befehl aus, um sysstat auf Amazon-Linux-AMIs zu installieren:

$ sudo yum install sysstat -y

2.Um festzustellen, ob Sie die Durchsatzgrenze erreichen, überprüfen Sie die rMB/s und wMB/s in der Ausgabe. Wenn rMB/s + wMB/s größer ist als der maximale Durchsatz des Volumes, tritt Micro-Bursting auf.

Um festzustellen, ob Sie die IOPS-Grenze erreichen, überprüfen Sie die r/s und w/s in der Ausgabe. Wenn r/s + w/s größer ist als die maximalen IOPS des Volumens, tritt Micro-Bursting auf.

Windows

Führen Sie den Befehl perfmon im Windows Performance Monitor aus. Weitere Informationen finden Sie unter Determine your IOPS and throughput requirements.

Verhindern von Micro-Bursting, indem Sie die Größe oder den Typ Ihres Volumes an Ihre Anwendungen anpassen

Ändern Sie das Volume zu einem Typ und einer Größe, die Ihren Anforderungen an IOPS und Durchsatz gerecht werden. Weitere Informationen zu Volume-Typen und ihren jeweiligen IOPS- und Durchsatzgrenzen finden Sie unter Amazon EBS-Volume-Typen. Die IOPS/der Durchsatz, den die Instance an alle angeschlossenen EBS-Volumes pushen kann, ist begrenzt.

Es hat sich bewährt, Ihre Volumes mit Ihrem Workload zu vergleichen, um zu prüfen, welche Volume-Typen Ihren Workload in einer Testumgebung sicher bewältigen können. Weitere Informationen finden Sie unter Durchführen von Benchmark-Tests für EBS-Volumes.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr