Konfigurieren von Azure Load Testing für hohe Auslastung

In diesem Artikel erfahren Sie, wie Sie mithilfe von Azure Load Testing einen Auslastungstest für eine hohe Last konfigurieren. Azure Load Testing abstrahiert die Komplexität der Bereitstellung der Infrastruktur zum Simulieren von hohem Datenverkehr. Um einen Auslastungstest zu skalieren, können Sie die Anzahl der parallelen Testmodulinstanzen konfigurieren. Um eine optimale Lastenverteilung zu erreichen, können Sie die Testinstanzintegritätsmetriken im Azure Load Testing-Dashboard überwachen.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie kein Azure-Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

  • Eine vorhandene Azure Load Testing-Ressource. Um eine Azure Load Testing-Ressource zu erstellen, lesen Sie den Schnellstart Erstellen und Ausführen eines Auslastungstests.

Konfigurieren von Auslastungsparametern für einen Auslastungstest

Um den Benutzerdatenverkehr für Ihre Anwendung zu simulieren, können Sie das Auslastungsmuster und die Anzahl der virtuellen Benutzer konfigurieren, für die Sie die Auslastung simulieren möchten. Wenn Sie den Auslastungstest über viele parallele Testmodulinstanzen ausführen, kann Azure Load Testing die Anzahl der virtuellen Benutzer aufskalieren, die den Datenverkehr zu Ihrer Anwendung simulieren. Das Auslastungsmuster bestimmt, wie die Auslastung über die Dauer des Auslastungstests verteilt wird. Beispiele für Auslastungsmuster sind linear, abgestuft oder Spitzenlast.

Je nach Typ des Auslastungstests, URL-basiert oder JMeter-basiert, haben Sie unterschiedliche Optionen zum Konfigurieren der Ziellast und des Auslastungsmusters. In der folgenden Tabelle sind die Unterschiede zwischen den beiden Testtypen aufgeführt.

Testtyp Anzahl der virtuellen Benutzer Auslastungsmuster
URL-basiert (einfach) Geben Sie die Zielanzahl virtueller Benutzer in der Auslastungstestkonfiguration an. Lineares Auslastungsmuster basierend auf der Hochlaufzeit und der Anzahl der virtuellen Benutzer.
URL-basiert (erweitert) Geben Sie die Anzahl der Testmodule und die Anzahl der virtuellen Benutzer pro Instanz in der Auslastungstestkonfiguration an. Konfigurieren Sie das Auslastungsmuster (linear, Schritt, Spitze).
JMeter-basiert Geben Sie die Anzahl der Testmodule in der Auslastungstestkonfiguration an. Geben Sie die Anzahl der virtuellen Benutzer im Testskript an. Konfigurieren Sie das Auslastungsmuster im Testskript.

Konfigurieren von Auslastungsparametern für URL-basierte Tests

So geben Sie die Auslastungsparameter für einen URL-basierten Auslastungstest an:

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure Load Testing-Ressource.

  2. Wählen Sie im linken Navigationsbereich Tests aus, um alle Tests anzuzeigen.

  3. Wählen Sie in der Liste Ihren Auslastungstest und dann Bearbeiten aus.

    Screenshot: Liste der Auslastungstest und die Schaltfläche „Bearbeiten“

    Alternativ können Sie die Testkonfiguration auch auf der Seite mit den Testdetails bearbeiten. Wählen Sie dazu Konfigurieren und dann Testen aus.

  4. Stellen Sie sicher, dass Sie auf der RegisterkarteGrundlagen die Option Erweiterte Einstellungen aktivieren auswählen.

  5. Wählen Sie auf der Seite Test bearbeiten die Registerkarte Auslastung aus.

    Bei URL-basierten Tests können Sie die Anzahl der parallelen Testmodulinstanzen und das Auslastungsmuster konfigurieren.

  6. Verwenden Sie das Modulinstanzen-Schiebereglersteuerelement, um die Anzahl der parallelen Testmodulinstanzen zu aktualisieren. Geben Sie alternativ den Zielwert in das Eingabefeld ein.

    Screenshot: die Registerkarte „Last“ im Bereich „Test bearbeiten“.

  7. Wählen Sie den Wert für das Auslastungsmuster aus der Liste aus.

    Tragen Sie für jedes Muster die entsprechenden Konfigurationseinstellungen ein. Das Diagramm zeigt eine visuelle Darstellung des Auslastungsmusters und seiner Konfigurationsparameter.

    Screenshot der Registerkarte „Auslastung“ beim Bearbeiten eines Auslastungstests, in dem gezeigt wird, wie das Auslastungsmuster konfiguriert wird.

Konfigurieren von Auslastungsparametern für JMeter-basierte Tests

So geben Sie die Auslastungsparameter für einen JMeter-basierten Auslastungstest an:

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure Load Testing-Ressource.

  2. Wählen Sie im linken Navigationsbereich Tests aus, um alle Tests anzuzeigen.

  3. Wählen Sie in der Liste Ihren Auslastungstest und dann Bearbeiten aus.

    Screenshot: Liste der Auslastungstest und die Schaltfläche „Bearbeiten“

    Alternativ können Sie die Testkonfiguration auch auf der Seite mit den Testdetails bearbeiten. Wählen Sie dazu Konfigurieren und dann Testen aus.

  4. Wählen Sie auf der Seite Test bearbeiten die Registerkarte Laden aus. Verwenden Sie das Schieberegler-Steuerelement Engine-Instanzen, um die Anzahl der Test-Engine-Instanzen zu aktualisieren, oder geben Sie den Wert direkt in das Eingabefeld ein.

    Screenshot: die Registerkarte „Last“ im Bereich „Test bearbeiten“.

  5. Wählen Sie Anwenden aus, um den Test zu ändern und die neue Konfiguration bei der erneuten Ausführung anzuwenden.

Überwachen von Engine-Instanzmetriken

Um sicherzustellen, dass die Testmodulinstanzen selbst keinen Leistungsengpass darstellen, können Sie Ressourcenmetriken der Testmodulinstanz überwachen. Eine hohe Ressourcennutzung für eine Testinstanz kann die Ergebnisse des Auslastungstests negativ beeinflussen.

Azure Load Testing meldet vier Ressourcenmetriken für jede Instanz:

  • CPU-Prozentsatz.
  • Arbeitsspeicherprozentsatz.
  • Netzwerkbytes pro Sekunde.
  • Anzahl der virtuellen Benutzer.

Eine Testmodulinstanz gilt als gesund, wenn der durchschnittliche CPU-Prozentsatz oder der Arbeitsspeicheranteil über die Dauer des Testlaufs unter 75 % bleibt.

So zeigen Sie die Ressourcenmetriken des Moduls an:

  1. Navigieren Sie zu Ihrer Auslastungstestressource. Wählen Sie im linken Bereich Tests aus, um die Liste der Auslastungstests anzuzeigen.

  2. Wählen Sie in der Liste den Auslastungstest aus, um die Liste der Testausführungen anzuzeigen.

  3. Wählen Sie in der Testlaufliste Ihre Testausführung aus.

  4. Wählen Sie im Testlaufdashboard die Engine-Integrität aus, um die Ressourcenmetriken des Moduls anzuzeigen.

    Wählen Sie optional eine bestimmte Testmodulinstanz mithilfe der Filtersteuerelemente aus.

Screenshot: Gesundheitsmetriken der Last-Engine auf dem Testlauf-Dashboard.

Problembehandlung bei ungesunden Engine-Instanzen

Wenn eine oder mehrere Instanzen einen hohen Ressourceneinsatz anzeigen, könnte sich dies auf die Testergebnisse auswirken. Dieses Problem lässt sich ggf. mit einem der folgenden Schritte beheben:

  • Reduzieren Sie die Anzahl der Threads (virtuelle Benutzer) pro Testmodul. Um eine Zielanzahl virtueller Benutzer zu erreichen, können Sie die Anzahl der Modulinstanzen für den Auslastungstest erhöhen.

  • Stellen Sie sicher, dass Ihr Skript wirksam ist, ohne redundanten Code.

  • Wenn der Integritätsstatus des Moduls unbekannt ist, führen Sie den Test erneut aus.

Bestimmen von Anforderungen pro Sekunde

Die maximale Anzahl von Anforderungen pro Sekunde (Requests per Second, RPS), die Azure Load Testing generieren kann, hängt von der Latenz der Anwendung und der Anzahl der virtuellen Benutzer (Virtual Users, VUs) ab. Die Anwendungslatenz entspricht der Gesamtzeit zwischen dem Senden einer Anwendungsanforderung durch das Testsystem und dem Empfang der Antwort. Die Anzahl der virtuellen Benutzer ist die Anzahl paralleler Anforderungen, die Azure Load Testing zu einem bestimmten Zeitpunkt ausführt.

Um die Anzahl der Anforderungen pro Sekunde zu berechnen, wenden Sie die folgende Formel an: RPS = (# von VUs) * (1/Latenz in Sekunden).

Wenn die Anwendungslatenz beispielsweise 20 Millisekunden (0,02 Sekunden) beträgt und Sie eine Last von 2.000 VUs generieren, können Sie ungefähr 100.000 RPS erreichen (2.000 × 1/0,02 s).

Um eine Zielanzahl von Anforderungen pro Sekunde zu erreichen, konfigurieren Sie die Gesamtzahl der virtuellen Benutzer für Ihren Auslastungstest.

Hinweis

Apache JMeter meldet nur Anforderungen, die an den Server und zurück gesendet wurden, entweder erfolgreich oder nicht erfolgreich. Wenn Apache JMeter keine Verbindung mit Ihrer Anwendung herstellen kann, liegt die tatsächliche Anzahl von Anforderungen pro Sekunde unter dem Maximalwert. Mögliche Ursachen können sein, dass der Server zu ausgelastet ist, um die Anforderung zu verarbeiten, oder dass ein TLS/SSL-Zertifikat fehlt. Um Verbindungsprobleme zu diagnostizieren, können Sie das Diagramm Fehler im Auslastungstestdashboard überprüfen und die Auslastungstest-Protokolldateien herunterladen.

Testen von Modulinstanzen und virtuellen Benutzern

Im Apache JMeter-Skript definieren Sie die Anzahl paralleler Threads. Jeder Thread stellt einen virtuellen Benutzer dar, der auf den Anwendungsendpunkt zugreift. Es wird empfohlen, die Anzahl der Threads unter einem Maximalwert von 250 Threads zu halten.

In Azure Load Testing sind Testmodulinstanzen für die Ausführung des Apache JMeter-Skripts verantwortlich. Die Instanzen der Test-Engine werden parallel ausgeführt. Sie können die Anzahl der Instanzen für einen Auslastungstest konfigurieren.

Die Gesamtzahl der virtuellen Benutzer für einen Auslastungstest ist dann: VUs = (# Threads) * (# Testmodulinstanzen).

Um eine Zielanzahl virtueller Benutzer zu simulieren, können Sie die parallelen Threads im JMeter-Skript und die Modulinstanzen für den Auslastungstest entsprechend konfigurieren. Überwachen Sie die Testmodulmetriken, um die Anzahl der Instanzen zu optimieren.

Um beispielsweise 1.000 Threads (oder virtuelle Benutzer) zu simulieren, legen Sie die Anzahl der Threads im Apache JMeter-Skript auf 250 fest. Konfigurieren Sie den Test dann mit vier Test-Engine-Instanzen (also 4 x 250 Threads).

Der Standort der Azure Load Testing-Ressource bestimmt den Standort der Test-Engine-Instanzen. Alle Test-Engine-Instanzen innerhalb einer Load Testing-Ressource werden in derselben Azure-Region gehostet.