Freigeben über


Lernprogramm: 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 Beispiel-Node.js Webanwendung 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:

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

Voraussetzungen

Überprüfung der Voraussetzungen

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

  • Melden Sie sich beim Azure-Portal an, und vergewissern Sie sich, dass 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 Service 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 Quell-Repository 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, das die Beispiel-App für Ihr Azure-Abonnement bereitstellt. Es verfügt auch über ein Apache JMeter-Skript, das Sie in späteren Schritten verwenden werden.

  3. Wechseln 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 unter Linux/WSL oder macOS installieren.

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

  4. Geben Sie an der Eingabeaufforderung Folgendes an:

    • die Azure-Abonnement-ID
    • Ein eindeutiger Name für Ihre Web-App.
    • Ein Ort. Standardmäßig ist eastusder Speicherort . Sie können Regionscodes abrufen, indem Sie den Befehl "Get-AzLocation " ausführen.

    Von Bedeutung

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

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

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-Portals einen Ladetest 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 der Liste der Auslastungstests im Azure-Portal, in dem hervorgehoben wird, wie Sie einen Test aus der Liste und die Schaltfläche

  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, der zeigt, wie Sie einem Ladetest im Azure-Portal App-Komponenten hinzufügen.

    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 im Azure-Portal aus. Alternativ können Sie Ihren CI/CD-Workflow so konfigurieren, dass der Ladetest ausgeführt wird.

So führen Sie ihren 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, der zeigt, wie Sie einen Ladetest im Azure-Portal starten.

    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, der die clientseitigen Metrikdiagramme im Ladetestdashboard im Azure-Portal zeigt.

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

    Tipp

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

Warten Sie, bis der Ladetest vollständig abgeschlossen ist, 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 Ursache des Problems zu ermitteln.

  1. Betrachten Sie zunächst die clientseitigen Metriken. 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 der clientseitigen Metriken.

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

    Screenshot des Fehlerdiagramms.

    Die Ergebnisse der add APIs sind get ähnlich, während sich die lasttimestamp API anders verhält. Die Ursache kann datenbankbezogen sein, da sowohl die APIs als auch der addget Datenbankzugriff umfassen.

  2. Um diesen Engpass ausführlicher zu untersuchen, scrollen Sie nach unten zum Dashboardabschnitt für serverseitige Metriken .

    Die serverseitigen Metriken zeigen detaillierte Informationen zu Ihren Azure-Anwendungskomponenten: Azure App Service-Plan, Azure App Web App und Azure Cosmos DB.

    Screenshot der Azure App Service-Planmetriken.

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

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

    Screenshot der Azure Cosmos DB-Metriken.

    Beachten Sie, dass die Metrik "Normalisierter RU-Verbrauch " zeigt, dass die Datenbank schnell mit 100% Ressourcenauslastung 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 aufweist. Das Erhöhen des bereitgestellten Durchsatzes der Datenbank kann das Leistungsproblem beheben.

Erhöhen des Datenbankdurchsatzes

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

Erhöhen Sie für Azure Cosmos DB die Ru-Skalierungseinstellung der Datenbank:

  1. Wechseln Sie zur Azure Cosmos DB-Ressource, die Sie als Teil der Beispielanwendungsbereitstellung bereitgestellt haben.

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

    Screenshot der Registerkarte

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

    Screenshot der aktualisierten Azure Cosmos DB-Skalierungseinstellungen.

  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ührungsdashboard "Erneut ausführen" und dann im Testbereich "Erneut ausführen" aus.

    Screenshot der Auswahl für die Ausführung des Auslastungstests.

    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. Wählen Sie jederzeit den Testlauf aus, um zu überwachen, wie der Auslastungstest ausgeführt wird.

  2. Überprüfen Sie nach Abschluss des Auslastungstests die Antwortzeitergebnisse und die Fehlerergebnisse der clientseitigen Metriken.

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

    Screenshot der clientseitigen Metriken von Azure Cosmos DB nach aktualisierung der Skalierungseinstellungen.

    Der Azure Cosmos DB Normalized RU Consumption-Wert liegt nun deutlich unter 100%.

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

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

Dadurch wurde die Gesamtleistung Ihrer Anwendung verbessert.

Bereinigen von Ressourcen

Von Bedeutung

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 der Auswahlmöglichkeiten zum Löschen einer Ressourcengruppe im 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.