Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
- Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch kein Azure-Abonnement haben, 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 --versionaus, 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.
Ü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.
Ö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 Quell-Repository der Beispielanwendung:
git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.gitDie 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.
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.ps1Geben 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.
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:
Öffnen Sie ein Terminalfenster, und geben Sie den folgenden Befehl ein, um sich bei Ihrem Azure-Abonnement anzumelden.
az loginWechseln Sie zum Beispielanwendungsverzeichnis.
cd nodejs-appsvc-cosmosdb-bottleneckErstellen 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 $locationErstellen Sie eine Azure-Auslastungstestressource mit dem
az load createBefehl.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 $locationErstellen Sie einen Auslastungstest zum Simulieren der Auslastung für Ihre Beispielanwendung mit dem
az load test createBefehl.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=$webappHostnameDieser Befehl verwendet die
Sampleapp.yamlTestkonfigurationsdatei zum Laden, die auf dasSampleApp.jmxJMeter-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 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:
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 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.
Betrachten Sie zunächst die clientseitigen Metriken. Sie stellen fest, dass das 90. Quantil für die Antwortzeitmetrik für die
addUndgetAPI-Anforderungen höher ist als für dielasttimestampAPI.
Sie können ein ähnliches Muster für Fehler sehen, bei dem die
lasttimestampAPI weniger Fehler aufweist als die anderen APIs.
Die Ergebnisse der
addAPIs sindgetähnlich, während sich dielasttimestampAPI anders verhält. Die Ursache kann datenbankbezogen sein, da sowohl die APIs als auch deraddgetDatenbankzugriff umfassen.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.
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.
Sehen Sie sich nun die serverseitigen Azure Cosmos DB-Metriken an.
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
addundgetWeb-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:
Wechseln Sie zur Azure Cosmos DB-Ressource, die Sie als Teil der Beispielanwendungsbereitstellung bereitgestellt haben.
Wählen Sie die Registerkarte "Daten-Explorer " aus.
Wählen Sie "Skalierung 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ührungsdashboard "Erneut ausführen" und dann im Testbereich "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. Wählen Sie jederzeit den Testlauf aus, um zu überwachen, wie der Auslastungstest ausgeführt wird.
Überprüfen Sie nach Abschluss des Auslastungstests die Antwortzeitergebnisse und die Fehlerergebnisse der clientseitigen Metriken.
Überprüfen Sie die serverseitigen Metriken für Azure Cosmos DB, und stellen Sie sicher, dass die Leistung verbessert wurde.
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
addapIsgetwurde 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:
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.
Verwandte Inhalte
- 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 für Azure Load Testing.