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
- Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
- Installation der Azure-Befehlszeilenschnittstelle auf Ihrem lokalen Computer.
- Azure CLI, Version 2.2.0 oder höher. Führen Sie die Ausführung
az --version
aus, um die version zu finden, die auf Ihrem Computer installiert ist. Wenn Sie die Azure CLI installieren oder aktualisieren müssen, finden Sie weitere Informationen unter Installieren der Azure CLI. - Visual Studio Code. Falls dieses Tool noch nicht vorhanden ist, laden Sie es herunter, und installieren Sie es.
- Git. Falls dieses Tool noch nicht vorhanden ist, laden Sie es herunter, und installieren Sie es.
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 --version
ausfü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.
Ö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>
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.
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
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.
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:
Öffnen Sie ein Terminalfenster, und geben Sie den folgenden Befehl ein, um sich bei Ihrem Azure-Abonnement anzumelden.
az login
Wechseln Sie zum Beispielanwendungsverzeichnis.
cd nodejs-appsvc-cosmosdb-bottleneck
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
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
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 Formularsmyapp.azurewebsites.net
. Schließen Sie den Teil der URL nicht einhttps://
.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 dasSampleApp.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:
Wechseln Sie im Azure-Portal zu Ihrer Azure Load Testing-Ressource.
Wählen Sie im linken Bereich "Tests" aus, um die Liste der Auslastungstests anzuzeigen.
Aktivieren Sie das Kontrollkästchen neben dem Ladetest, und wählen Sie dann "Bearbeiten" aus.
Wechseln Sie zur Registerkarte "Überwachung", und wählen Sie dann "Hinzufügen/Ändern" aus.
Aktivieren Sie die Kontrollkästchen für die Beispielanwendung, die Sie zuvor bereitgestellt haben, und wählen Sie dann "Übernehmen" aus.
Tipp
Sie können den Ressourcengruppenfilter verwenden, um nur die Azure-Ressourcen in der Beispielanwendungsressourcengruppe anzuzeigen.
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:
Wechseln Sie im Azure-Portal zu Ihrer Azure Load Testing-Ressource.
Wählen Sie im linken Bereich "Tests" aus, um die Liste der Auslastungstests anzuzeigen.
Wählen Sie den Ladetest aus der Liste aus, um die Testdetails und die Liste der Testläufe anzuzeigen.
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.
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.
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.
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.
Sehen Sie sich zunächst die clientseitigen Metriken an. Sie stellen fest, dass das 90. Quantil für die Antwortzeitmetrik für die
add
Undget
API-Anforderungen höher ist als für dielasttimestamp
API.Sie können ein ähnliches Muster für Fehler sehen, bei dem die
lasttimestamp
-API weniger Fehler als die anderen APIs aufweist.Die Ergebnisse der
add
- undget
-APIs sind ähnlich, während sich dielasttimestamp
-API anders verhält. Dies kann auf die Datenbank zurückzuführen sein, da dieadd
- und dieget
-API einen Datenbankzugriff ausführen.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.
In den Metriken für den Azure App Service-Plan erkennen Sie, dass die Metriken CPU-Prozentsatz und Arbeitsspeicherprozentsatz innerhalb eines akzeptablen Bereichs liegen.
Sehen Sie sich nun die serverseitigen Azure Cosmos DB-Metriken an.
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
undget
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:
Navigieren Sie zur Azure Cosmos DB-Ressource, die Sie bei der Bereitstellung der Beispielanwendung bereitgestellt haben.
Wählen Sie die Registerkarte Daten-Explorer aus.
Wählen Sie "Skalieren" und "Einstellungen" aus, und aktualisieren Sie den Durchsatzwert auf 1200.
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:
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.
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.
Überprüfen Sie nach Abschluss des Auslastungstests die Ergebnisse der clientseitigen Metriken Antwortzeit und Fehler.
Überprüfen Sie die serverseitigen Metriken für Azure Cosmos DB, und stellen Sie sicher, dass die Leistung verbessert wurde.
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
apIsadd
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:
Wählen Sie im Portal links oben die Menüschaltfläche und dann Ressourcengruppen aus.
Wählen Sie in der Liste die Ressourcengruppe aus, die Sie erstellt haben.
Wählen Sie die Option Ressourcengruppe löschen.
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.
Zugehöriger Inhalt
- Weitere Informationen zum Diagnostizieren von Fehlerhaften Tests
- Überwachen von serverseitigen Metriken zur Identifizierung von Leistungsengpässen in Ihrer Anwendung
- Definieren von Auslastungstestfehlerkriterien zum Überprüfen von Testergebnissen anhand Ihrer Dienstanforderungen
- Erfahren Sie mehr über die wichtigsten Konzepte bei Azure Load Testing.