Självstudie: Kör ett belastningstest för att identifiera flaskhalsar i prestanda i en webbapp
I den här självstudien lär du dig att identifiera flaskhalsar i prestanda i ett webbprogram med hjälp av Azure Load Testing. Du simulerar belastningen för ett node.js-exempelwebbprogram och använder sedan instrumentpanelen för belastningstest för att analysera mått på klientsidan och serversidan.
Exempelprogrammet består av ett Node.js-webb-API som interagerar med en NoSQL-databas. Du distribuerar webb-API:et till Azure App Service-webbappar och använder Azure Cosmos DB som databas.
I den här självstudien lär du dig att:
- Distribuera exempelappen.
- Skapa och kör ett belastningstest.
- Lägg till Azure-appkomponenter i belastningstestet.
- Identifiera flaskhalsar för prestanda med hjälp av instrumentpanelen för belastningstest.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
- Azure CLI installerat på din lokala dator.
- Azure CLI version 2.2.0 eller senare. Kör
az --version
för att hitta den version som är installerad på datorn. Om du behöver installera eller uppgradera Azure CLI kan du läsa Installera Azure CLI. - Visual Studio Code. Om du inte har den laddar du ned och installerar den.
- Git. Om du inte har den laddar du ned och installerar den.
Kravkontroll
Innan du börjar verifierar du din miljö:
Logga in på Azure-portalen och kontrollera att din prenumeration är aktiv.
Kontrollera din version av Azure CLI i en terminal eller ett kommandofönster genom att köra
az --version
. Den senaste versionen finns i de senaste viktig information.Om du inte har den senaste versionen uppdaterar du installationen genom att följa installationsguiden för ditt operativsystem eller din plattform.
Distribuera exempelprogrammet
I den här självstudien genererar du belastning mot ett exempelwebbprogram som du distribuerar till Azure App Service. Använd Azure CLI-kommandon, Git-kommandon och PowerShell-kommandon för att distribuera exempelprogrammet i din Azure-prenumeration.
Öppna Windows PowerShell, logga in på Azure och ange prenumerationen:
az login az account set --subscription <your-Azure-Subscription-ID>
Klona exempelprogrammets källdatabas:
git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
Exempelprogrammet är en Node.js-app som består av en Azure App Service-webbkomponent och en Azure Cosmos DB-databas. Lagringsplatsen innehåller ett PowerShell-skript som distribuerar exempelappen till din Azure-prenumeration. Det har också ett Apache JMeter-skript som du använder i senare steg.
Gå till node.js-appens katalog och distribuera exempelappen med hjälp av det här PowerShell-skriptet:
cd nodejs-appsvc-cosmosdb-bottleneck .\deploymentscript.ps1
Ange följande i kommandotolken:
- ditt prenumerations-ID för Azure
- Ett unikt namn för webbappen.
- En plats. Som standard är
eastus
platsen . Du kan hämta regionkoder genom att köra kommandot Get-AzLocation .
Viktigt!
Använd endast gemener och siffror för webbappens namn. Använd inte blanksteg eller specialtecken.
När distributionen är klar går du till exempelprogrammet som körs genom att öppna
https://<yourappname>.azurewebsites.net
i ett webbläsarfönster.
Nu när du har distribuerat och kört exempelprogrammet kan du skapa en Azure-belastningstestningsresurs och ett belastningstest.
Skapa ett belastningstest
I den här självstudien skapar du ett belastningstest med Azure CLI genom att ladda upp ett JMeter-testskript (jmx
fil). Exempelprogrammets lagringsplats innehåller redan en konfigurationsfil för belastningstest och JMeter-testskript.
Om du vill skapa ett belastningstest med hjälp av Azure-portalen följer du stegen i Snabbstart: skapa ett belastningstest med ett JMeter-skript.
Följ de här stegen för att skapa en Azure-belastningstestningsresurs och ett belastningstest med hjälp av Azure CLI:
Öppna ett terminalfönster och ange följande kommando för att logga in på din Azure-prenumeration.
az login
Gå till exempelprogramkatalogen.
cd nodejs-appsvc-cosmosdb-bottleneck
Skapa en resursgrupp för Azure-belastningstestningsresursen.
Du kan också återanvända resursgruppen för exempelprogrammet som du distribuerade tidigare.
<load-testing-resource-group-name>
Ersätt textplatshållaren med namnet på resursgruppen.resourceGroup="<load-testing-resource-group-name>" location="East US" az group create --name $resourceGroup --location $location
Skapa en Azure-belastningstestningsresurs med
az load create
kommandot .<load-testing-resource-name>
Ersätt textplatshållaren med namnet på belastningstestningsresursen.# This script requires the following Azure CLI extensions: # - load loadTestResource="<load-testing-resource-name>" az load create --name $loadTestResource --resource-group $resourceGroup --location $location
Skapa ett belastningstest för att simulera belastningen mot exempelprogrammet med
az load test create
kommandot .<web-app-hostname>
Ersätt textplatshållaren med App Service-värdnamnet för exempelprogrammet. Det här värdet är av formuläretmyapp.azurewebsites.net
. Ta inte med delenhttps://
av URL:en.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
Det här kommandot använder konfigurationsfilen
Sampleapp.yaml
för belastningstest, som refererar tillSampleApp.jmx
JMeter-testskriptet. Du använder en kommandoradsparameter för att skicka exempelprogrammets värdnamn till belastningstestet.
Nu har du en Azure-belastningstestningsresurs och ett belastningstest för att generera belastning mot exempelwebbprogrammet i din Azure-prenumeration.
Lägga till Azure-appkomponenter för att övervaka programmet
Med Azure Load Testing kan du övervaka resursmått för Azure-komponenterna i ditt program. Genom att analysera dessa mått på serversidan kan du identifiera prestanda- och stabilitetsproblem i ditt program direkt från Instrumentpanelen för Azure Load Testing.
I den här självstudien lägger du till Azure-komponenterna för exempelprogrammet som du distribuerade i Azure, till exempel apptjänsten, Cosmos DB-kontot med mera.
Så här lägger du till Azure-appkomponenterna för exempelprogrammet i belastningstestet:
I Azure-portalen går du till din Azure-belastningstestningsresurs.
I den vänstra rutan väljer du Tester för att visa listan över belastningstester
Markera kryssrutan bredvid belastningstestet och välj sedan Redigera.
Gå till fliken Övervakning och välj sedan Lägg till/ändra.
Markera kryssrutorna för exempelprogrammet som du distribuerade tidigare och välj sedan Använd.
Dricks
Du kan använda resursgruppfiltret för att endast visa Azure-resurserna i exempelprogrammets resursgrupp.
Välj Använd för att spara ändringarna i belastningstestkonfigurationen.
Du har lagt till Azure-appkomponenterna för exempelprogrammet i belastningstestet för att aktivera övervakning av mått på serversidan medan belastningstestet körs.
Kör belastningstestet
Nu kan du köra belastningstestet för att simulera belastningen mot exempelprogrammet som du distribuerade i din Azure-prenumeration. I den här självstudien kör du belastningstestet från Azure-portalen. Alternativt kan du konfigurera ditt CI/CD-arbetsflöde för att köra belastningstestet.
Så här kör du belastningstestet i Azure-portalen:
I Azure-portalen går du till din Azure-belastningstestningsresurs.
I den vänstra rutan väljer du Tester för att visa listan över belastningstester
Välj belastningstestet i listan för att visa testinformationen och listan över testkörningar.
Välj Kör och sedan Kör igen för att starta belastningstestet.
Du kan också ange en beskrivning av testkörningen.
När du kör ett belastningstest distribuerar Azure Load Testing JMeter-testskriptet och eventuella extra filer till testmotorinstanserna och startar sedan belastningstestet.
När belastningstestet startar bör du se instrumentpanelen för belastningstestet.
Om instrumentpanelen inte visas kan du välja Uppdatera på och sedan välja testkörningen i listan.
Instrumentpanelen för belastningstest visar testkörningsinformationen, till exempel mått på klientsidan och programmått på serversidan. Diagram på instrumentpanelen uppdateras automatiskt.
Du kan använda flera filter eller aggregera resultatet till olika percentiler för att anpassa diagrammen.
Dricks
Du kan när som helst stoppa ett belastningstest från Azure-portalen genom att välja Stoppa.
Vänta tills belastningstestet har slutförts helt innan du fortsätter till nästa avsnitt.
Använda mått på serversidan för att identifiera flaskhalsar i prestanda
I det här avsnittet analyserar du resultatet av belastningstestet för att identifiera prestandaflaskhalsar i programmet. Granska både måtten på klientsidan och serversidan för att fastställa rotorsaken till problemet.
Titta först på måtten på klientsidan. Du märker att den 90:e percentilen för måttet Svarstid för
add
api-begäranden ochget
är högre än för API:etlasttimestamp
.Du kan se ett liknande mönster för Fel, där API:et
lasttimestamp
har färre fel än de andra API:erna.Resultatet av API:erna
add
ochget
är liknande, medan API:etlasttimestamp
beter sig annorlunda. Orsaken kan vara databasrelaterad, eftersom både API:ernaadd
ochget
omfattar databasåtkomst.Om du vill undersöka den här flaskhalsen mer i detalj rullar du ned till instrumentpanelen för mått på serversidan.
Måtten på serversidan visar detaljerad information om dina Azure-programkomponenter: Azure App Service-plan, Azure App Service-webbapp och Azure Cosmos DB.
I måtten för Azure App Service-planen kan du se att måtten CPU-procent och minnesprocent ligger inom ett acceptabelt intervall.
Titta nu på måtten på Serversidan i Azure Cosmos DB.
Observera att måttet Normaliserad RU-förbrukning visar att databasen snabbt kördes med 100 % resursanvändning. Den höga resursanvändningen kan orsaka databasbegränsningsfel. Det kan också öka svarstiderna för webb-API:erna
add
ochget
.Du kan också se att måttet Etablerat dataflöde för Azure Cosmos DB-instansen har ett maximalt dataflöde på 400 RU:er. Att öka databasens etablerade dataflöde kan lösa prestandaproblemet.
Öka databasens dataflöde
I det här avsnittet allokerar du fler resurser till databasen för att lösa flaskhalsen för prestanda.
Öka ru-skalningsinställningen för databasen för Azure Cosmos DB:
Gå till den Azure Cosmos DB-resurs som du etablerade som en del av exempelprogramdistributionen.
Välj fliken Datautforskaren .
Välj Skala och Inställningar och uppdatera dataflödesvärdet till 1200.
Bekräfta ändringarna genom att välja Spara .
Verifiera prestandaförbättringarna
Nu när du har ökat databasens dataflöde kör du belastningstestet igen och kontrollerar att prestandaresultatet har förbättrats:
På testkörningsinstrumentpanelen väljer du Kör igen och väljer sedan Kör igen i testfönstret Kör om.
Du kan se en ny testkörningspost med en statuskolumn som växlar genom tillstånden Etablering, Körning och Klar . När som helst väljer du testkörningen för att övervaka hur belastningstestet fortskrider.
När belastningstestet har slutförts kontrollerar du svarstidsresultaten och felresultaten för måtten på klientsidan.
Kontrollera måtten på serversidan för Azure Cosmos DB och se till att prestandan har förbättrats.
Värdet för normaliserad RU-förbrukning i Azure Cosmos DB är nu långt under 100 %.
Nu när du har uppdaterat skalningsinställningarna för databasen kan du se följande:
- Svarstiden för API:erna
add
ochget
har förbättrats. - Den normaliserade RU-förbrukningen ligger fortfarande långt under gränsen.
Därför förbättrades programmets övergripande prestanda.
Rensa resurser
Viktigt!
Du kan återanvända den Azure Load Testing-resurs som du skapade för andra Azure Load Testing-självstudier och instruktionsartiklar.
Om du inte planerar att använda någon av de resurser som du har skapat tar du bort dem så att du inte debiteras ytterligare avgifter. Om du har distribuerat exempelprogrammet i en annan resursgrupp kanske du vill upprepa följande steg.
Så här tar du bort resurser med hjälp av Azure-portalen:
Välj menyknappen i det övre vänstra hörnet och välj sedan Resursgrupper.
I listan väljer du den resursgrupp som du skapade.
Välj Ta bort resursgrupp.
Ange resursgruppsnamnet. Välj sedan ta bort.
Om du vill ta bort resurser med hjälp av Azure CLI anger du följande kommando:
az group delete --name <yourresourcegroup>
Kom ihåg att om du tar bort resursgruppen tas alla resurser i den bort.
Relaterat innehåll
- Få mer information om hur du diagnostiserar misslyckade tester
- Övervaka mått på serversidan för att identifiera flaskhalsar i programmet
- Definiera felvillkor för belastningstest för att verifiera testresultat mot dina tjänstkrav
- Läs mer om viktiga begrepp för Azure Load Testing.