Tutorial: Ausführen eines Auslastungstests zum Identifizieren von Leistungsengpässen in einer Web-App

In diesem Lernprogramm erfahren Sie, wie Sie Leistungsengpässe in einer Webanwendung mithilfe von Azure Load Testing identifizieren. Sie simulieren die Last für eine Node.js-Beispielwebanwendung und verwenden dann das Auslastungstestdashboard, um clientseitige und serverseitige Metriken zu analysieren.

Die Beispielanwendung besteht aus einer Node.js-Web-API, die mit einer NoSQL-Datenbank interagiert. Sie stellen die Web-API für Azure-App Service-Web-Apps bereit und verwenden Azure Cosmos DB als Datenbank.

In diesem Tutorial lernen Sie Folgendes:

  • Bereitstellen der Beispiel-App.
  • Erstellen und Ausführen eines Auslastungstests.
  • Fügen Sie dem Ladetest Azure-App-Komponenten hinzu.
  • Identifizieren Sie Leistungsengpässe mithilfe des Auslastungstestdashboards.

Voraussetzungen

Prüfung der erforderlichen Komponenten

Überprüfen Sie Ihre Umgebung, bevor Sie beginnen:

  • Melden Sie sich beim Azure-Portal an, und überprüfen Sie, ob Ihr Abonnement aktiv ist.

  • Überprüfen Sie Ihre Version der Azure-Befehlszeilenschnittstelle, indem Sie in einem Terminal oder Befehlsfenster az --versionausführen. Die neueste Version finden Sie unter Versionshinweise für die Azure CLI.

    Sollten Sie nicht über die neueste Version verfügen, aktualisieren Sie Ihre Installation wie unter Installieren der Azure CLI beschrieben.

Bereitstellen der Beispielanwendung

In diesem Lernprogramm generieren Sie Last für eine Beispielwebanwendung, die Sie für Azure-App Dienst bereitstellen. Verwenden Sie Azure CLI-Befehle, Git-Befehle und PowerShell-Befehle, um die Beispielanwendung in Ihrem Azure-Abonnement bereitzustellen.

  1. Öffnen Sie Windows PowerShell, melden Sie sich bei Azure an, und legen Sie das Abonnement fest:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Klonen Sie das Quellrepository der Beispielanwendung:

    git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
    

    Die Beispielanwendung ist eine Node.js-App, die aus einer Azure App Service-Webkomponente und einer Azure Cosmos DB-Datenbank besteht. Das Repository enthält ein PowerShell-Skript, mit dem die Beispiel-App in Ihrem Azure-Abonnement bereitgestellt wird. Es verfügt auch über ein Apache JMeter-Skript, das Sie in späteren Schritten verwenden.

  3. Navigieren Sie zum Verzeichnis der Node.js-App, und stellen Sie die Beispiel-App mithilfe dieses PowerShell-Skripts bereit:

    cd nodejs-appsvc-cosmosdb-bottleneck
    .\deploymentscript.ps1
    

    Tipp

    Sie können PowerShell Core unter Linux/WSL oder macOS installieren.

    Nach der Installation können Sie den vorherigen Befehl als pwsh ./deploymentscript.ps1 ausführen.

  4. Geben Sie an der Eingabeaufforderung Folgendes an:

    • die Azure-Abonnement-ID
    • Einen eindeutigen Namen für Ihre Web-App.
    • Einen Speicherort. Standardmäßig ist der Speicherort eastus. Sie können Regionscodes abrufen, indem Sie den Befehl Get-AzLocation ausführen.

    Wichtig

    Verwenden Sie für den Namen Ihrer Web-App nur Kleinbuchstaben und Ziffern. Verwenden Sie keine Leerzeichen oder Sonderzeichen.

  5. Wechseln Sie nach Abschluss der Bereitstellung zur ausgeführten Beispielanwendung, indem Sie https://<yourappname>.azurewebsites.net in einem Browserfenster öffnen.

Nachdem Sie nun die Beispielanwendung bereitgestellt und ausgeführt haben, können Sie eine Azure-Auslastungstestressource und einen Auslastungstest erstellen.

Erstellen eines Auslastungstests

In diesem Lernprogramm erstellen Sie einen Ladetest mit der Azure CLI, indem Sie ein JMeter-Testskript (jmx Datei) hochladen. Das Beispielanwendungs-Repository enthält bereits eine Auslastungstestkonfigurationsdatei und ein JMeter-Testskript.

Führen Sie die Schritte in der Schnellstartanleitung aus, um mithilfe des Azure-Portal einen Auslastungstest mit einem JMeter-Skript zu erstellen.

Führen Sie die folgenden Schritte aus, um eine Azure-Auslastungstestressource und einen Auslastungstest mithilfe der Azure CLI zu erstellen:

  1. Öffnen Sie ein Terminalfenster, und geben Sie den folgenden Befehl ein, um sich bei Ihrem Azure-Abonnement anzumelden.

    az login
    
  2. Wechseln Sie zum Beispielanwendungsverzeichnis.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. Erstellen Sie eine Ressourcengruppe für die Azure-Auslastungstestressource.

    Optional können Sie auch die Ressourcengruppe der Zuvor bereitgestellten Beispielanwendung wiederverwenden.

    Ersetzen Sie den <load-testing-resource-group-name> Textplatzhalter durch den Namen der Ressourcengruppe.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. Erstellen Sie eine Azure-Auslastungstestressource mit dem az load create Befehl.

    Ersetzen Sie den <load-testing-resource-name> Textplatzhalter durch den Namen der Auslastungstestressource.

    # This script requires the following Azure CLI extensions:
    # - load
    
    loadTestResource="<load-testing-resource-name>"
    
    az load create --name $loadTestResource --resource-group $resourceGroup --location $location
    
  5. Erstellen Sie einen Auslastungstest zum Simulieren der Auslastung für Ihre Beispielanwendung mit dem az load test create Befehl.

    Ersetzen Sie den <web-app-hostname> Textplatzhalter durch den App Service-Hostname der Beispielanwendung. Dieser Wert ist des Formulars myapp.azurewebsites.net. Schließen Sie den Teil der URL nicht ein https:// .

    testId="sample-app-test"
    webappHostname="<web-app-hostname>"
    
    az load test create --test-id $testId --load-test-resource $loadTestResource --resource-group $resourceGroup --load-test-config-file SampleApp.yaml --env webapp=$webappHostname
    

    Dieser Befehl verwendet die Sampleapp.yaml Testkonfigurationsdatei zum Laden, die auf das SampleApp.jmx JMeter-Testskript verweist. Sie verwenden einen Befehlszeilenparameter, um den Hostnamen der Beispielanwendung an den Auslastungstest zu übergeben.

Sie verfügen jetzt über eine Azure-Auslastungstestressource und einen Auslastungstest zum Generieren von Lasten für die Beispielwebanwendung in Ihrem Azure-Abonnement.

Hinzufügen von Azure-App-Komponenten zum Überwachen der Anwendung

Mit Azure Load Testing können Sie Ressourcenmetriken für die Azure-Komponenten Ihrer Anwendung überwachen. Durch die Analyse dieser serverseitigen Metriken können Sie Leistungs- und Stabilitätsprobleme in Ihrer Anwendung direkt über das Azure Load Testing-Dashboard identifizieren.

In diesem Lernprogramm fügen Sie die Azure-Komponenten für die Beispielanwendung hinzu, die Sie in Azure bereitgestellt haben, z. B. den App-Dienst, das Cosmos DB-Konto und vieles mehr.

So fügen Sie den Ladetest die Azure-App-Komponenten für die Beispielanwendung hinzu:

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

  2. Wählen Sie im linken Bereich "Tests" aus, um die Liste der Auslastungstests anzuzeigen.

  3. Aktivieren Sie das Kontrollkästchen neben dem Ladetest, und wählen Sie dann "Bearbeiten" aus.

    Screenshot that shows the list of load tests in the Azure portal, highlighting how to select a test from the list and the Edit button to modify the load test configuration.

  4. Wechseln Sie zur Registerkarte "Überwachung", und wählen Sie dann "Hinzufügen/Ändern" aus.

  5. Aktivieren Sie die Kontrollkästchen für die Beispielanwendung, die Sie zuvor bereitgestellt haben, und wählen Sie dann "Übernehmen" aus.

    Screenshot that shows how to add app components to a load test in the Azure portal.

    Tipp

    Sie können den Ressourcengruppenfilter verwenden, um nur die Azure-Ressourcen in der Beispielanwendungsressourcengruppe anzuzeigen.

  6. Wählen Sie "Übernehmen" aus, um die Änderungen an der Auslastungstestkonfiguration zu speichern.

Sie haben die Azure-App-Komponenten für die Beispielanwendung zum Auslastungstest erfolgreich hinzugefügt, um die überwachung serverseitigen Metriken zu aktivieren, während der Ladetest ausgeführt wird.

Auslastungstest ausführen

Sie können nun den Ladetest ausführen, um die Auslastung mit der Beispielanwendung zu simulieren, die Sie in Ihrem Azure-Abonnement bereitgestellt haben. In diesem Lernprogramm führen Sie den Ladetest innerhalb der Azure-Portal aus. Alternativ können Sie Ihren CI/CD-Workflow so konfigurieren, dass der Ladetest ausgeführt wird.

So führen Sie den Auslastungstest im Azure-Portal aus:

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

  2. Wählen Sie im linken Bereich "Tests" aus, um die Liste der Auslastungstests anzuzeigen.

  3. Wählen Sie den Ladetest aus der Liste aus, um die Testdetails und die Liste der Testläufe anzuzeigen.

  4. Wählen Sie "Ausführen" und dann erneut ausführen aus, um den Ladetest zu starten.

    Optional können Sie eine Beschreibung der Testausführung eingeben.

    Screenshot that shows how to start a load test in the Azure portal.

    Wenn Sie einen Auslastungstest ausführen, stellt Azure Load Testing das JMeter-Testskript und alle zusätzlichen Dateien für die Testmodulinstanzen bereit und startet dann den Auslastungstest.

  5. Wenn der Ladetest gestartet wird, sollte das Ladetestdashboard angezeigt werden.

    Wenn das Dashboard nicht angezeigt wird, können Sie "Aktualisieren" auswählen und dann in der Liste die Testausführung auswählen.

    Das Testdashboard zum Laden stellt die Details zur Testausführung dar, z. B. die clientseitigen Metriken und serverseitige Anwendungsmetriken. Die Diagramme im Dashboard werden automatisch aktualisiert.

    Screenshot that shows the client-side metrics graphs in the load test dashboard in the Azure portal.

    Sie können mehrere Filter anwenden oder die Ergebnisse in verschiedene Perzentile aggregieren, um die Diagramme anzupassen.

    Tipp

    Sie können einen Auslastungstest jederzeit über das Azure-Portal beenden, indem Sie Beenden auswählen.

Warten Sie, bis der Auslastungstest vollständig abgeschlossen wurde, bevor Sie mit dem nächsten Abschnitt fortfahren.

Verwenden von serverseitigen Metriken zum Identifizieren von Leistungsengpässen

In diesem Abschnitt analysieren Sie die Ergebnisse des Auslastungstests, um Leistungsengpässe in der Anwendung zu identifizieren. Untersuchen Sie sowohl die clientseitigen als auch die serverseitigen Metriken, um die Grundursache des Problems zu ermitteln.

  1. Sehen Sie sich zunächst die clientseitigen Metriken an. Sie stellen fest, dass das 90. Quantil für die Antwortzeitmetrik für die add Und get API-Anforderungen höher ist als für die lasttimestamp API.

    Screenshot that shows the client-side metrics.

    Sie können ein ähnliches Muster für Fehler sehen, bei dem die lasttimestamp-API weniger Fehler als die anderen APIs aufweist.

    Screenshot that shows the error chart.

    Die Ergebnisse der add- und get-APIs sind ähnlich, während sich die lasttimestamp-API anders verhält. Dies kann auf die Datenbank zurückzuführen sein, da die add- und die get-API einen Datenbankzugriff ausführen.

  2. Scrollen Sie im Dashboard nach unten zum Abschnitt Serverseitige Metriken, um diesen Engpass ausführlicher zu untersuchen.

    Die serverseitigen Metriken enthalten ausführliche Informationen zu Ihren Azure-Anwendungskomponenten: Azure App Service-Plan, Azure App Service-Web-App und Azure Cosmos DB.

    Screenshot that shows the Azure App Service plan metrics.

    In den Metriken für den Azure App Service-Plan erkennen Sie, dass die Metriken CPU-Prozentsatz und Arbeitsspeicherprozentsatz innerhalb eines akzeptablen Bereichs liegen.

  3. Sehen Sie sich nun die serverseitigen Azure Cosmos DB-Metriken an.

    Screenshot that shows Azure Cosmos DB metrics.

    Die Metrik Normalisierter RU-Verbrauch zeigt, dass die Datenbank schnell mit einer Ressourcenauslastung von 100 % ausgeführt wurde. Die hohe Ressourcenauslastung kann zu Datenbankeinschränkungsfehlern führen. Es kann auch die Reaktionszeiten für die add und get Web-APIs erhöhen.

    Sie können auch sehen, dass die Metrik Bereitgestellter Durchsatz für die Azure Cosmos DB-Instanz einen maximalen Durchsatz von 400 RUs aufwies. Durch Erhöhen des bereitgestellten Durchsatzes der Datenbank kann das Leistungsproblem möglicherweise behoben werden.

Erhöhen des Datenbankdurchsatzes

In diesem Abschnitt weisen Sie der Datenbank weitere Ressourcen zu, um den Leistungsengpässe zu beheben.

Für Azure Cosmos DB erhöhen Sie die RU-Skalierungseinstellung der Datenbank:

  1. Navigieren Sie zur Azure Cosmos DB-Ressource, die Sie bei der Bereitstellung der Beispielanwendung bereitgestellt haben.

  2. Wählen Sie die Registerkarte Daten-Explorer aus.

    Screenshot that shows Data Explorer tab.

  3. Wählen Sie "Skalieren" und "Einstellungen" aus, und aktualisieren Sie den Durchsatzwert auf 1200.

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. Wählen Sie Speichern aus, um die Änderungen zu bestätigen.

Überprüfen der Leistungsverbesserungen

Nachdem Sie den Datenbankdurchsatz erhöht haben, führen Sie den Auslastungstest erneut aus, und stellen Sie sicher, dass sich die Leistung verbessert hat:

  1. Wählen Sie im Testausführungs-Dashboard Erneut ausführen aus und wählen Sie dann im Test erneut ausführen-Bereich Erneut ausführen aus.

    Screenshot that shows selections for running the load test.

    Sie können einen neuen Eintrag für die Testausführung mit einer Statusspalte sehen, die durch den Status "Bereitstellung", "Ausführen" und "Fertig " wechselt. Sie können jederzeit den Testlauf auswählen, um den Fortschritt des Auslastungstests zu überwachen.

  2. Überprüfen Sie nach Abschluss des Auslastungstests die Ergebnisse der clientseitigen Metriken Antwortzeit und Fehler.

  3. Überprüfen Sie die serverseitigen Metriken für Azure Cosmos DB, und stellen Sie sicher, dass die Leistung verbessert wurde.

    Screenshot that shows the Azure Cosmos DB client-side metrics after update of the scale settings.

    Sie werden feststellen, dass der Wert Normalisierter RU-Verbrauch von Azure Cosmos DB jetzt deutlich unter 100 % liegt.

Nachdem Sie nun die Skalierungseinstellungen der Datenbank aktualisiert haben, können Sie folgendes sehen:

  • Die Reaktionszeit für die und get apIs add wurde verbessert.
  • Der normalisierte RU-Verbrauch bleibt deutlich unter dem Grenzwert.

Dadurch wurde die Gesamtleistung Ihrer Anwendung verbessert.

Bereinigen von Ressourcen

Wichtig

Sie können die Azure Load Testing-Ressource, die Sie für andere Tutorials und Anleitungen zu Azure Load Testing erstellt haben, wiederverwenden.

Wenn Sie die erstellten Ressourcen nicht mehr benötigen, löschen Sie sie, damit Ihnen keine weiteren Kosten entstehen. Wenn Sie die Beispielanwendung in einer anderen Ressourcengruppe bereitgestellt haben, müssen die folgenden Schritte ggf. wiederholt werden.

So löschen Sie Ressourcen über das Azure-Portal:

  1. Wählen Sie im Portal links oben die Menüschaltfläche und dann Ressourcengruppen aus.

  2. Wählen Sie in der Liste die Ressourcengruppe aus, die Sie erstellt haben.

  3. Wählen Sie die Option Ressourcengruppe löschen. Screenshot of the selections to delete a resource group in the Azure portal.

  4. Geben Sie den Ressourcengruppennamen ein. Wählen Sie anschließend die Option Löschen.

Um Ressourcen mithilfe des Azure CLI löschen, geben Sie den folgenden Befehl ein:

az group delete --name <yourresourcegroup>

Denken Sie daran, dass beim Löschen der Ressourcengruppe alle darin enthaltenen Ressourcen gelöscht werden.