Självstudie: Kör ett belastningstest för att identifiera prestandaflaskhalsar i en webbapp
I den här självstudien lär du dig att identifiera flaskhalsar i prestanda i en webbapp med hjälp av förhandsversionen av Azure Load Testing. Du skapar ett belastningstest för ett exempelprogram Node.js program.
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 Cosmos DB som databas.
I den här självstudien får du lära dig att:
- Distribuera exempelappen.
- Skapa och kör ett belastningstest.
- Identifiera flaskhalsar i appens prestanda.
- Ta bort flaskhalsen.
- Kör belastningstestet på ny tid för att kontrollera prestandaförbättringarna.
Viktigt
Azure Load Testing finns för närvarande som förhandsversion. Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Den här självstudien kräver att du kör Azure CLI lokalt. Du måste ha Azure CLI version 2.2.0 eller senare installerat. Kör
az --versionför att hitta versionen. Om du behöver installera eller uppgradera CLI kan du gå till Så här installerar du Azure CLI. - Ladda ned och installera VS Code.
- Ladda ned och installera Git
Distribuera exempelappen
Innan du kan läsa in testappen måste du komma igång med den. Använd Azure CLI-kommandon, Git-kommandon och PowerShell-kommandon för att göra detta.
Ö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.gitExempelprogrammet är en Node.js som består av en Azure App Service webbkomponent och en Cosmos DB databas. Lagringsplatsen innehåller ett PowerShell-skript som distribuerar exempelappen till din Azure-prenumeration. Den har också ett Apache JMeter-skript som du kommer att använda i senare steg.
Gå till Node.js-appens katalog och distribuera exempelappen med hjälp av PowerShell-skriptet.
cd nodejs-appsvc-cosmosdb-bottleneck .\deploymentscript.ps1I kommandotolken anger du:
- ditt prenumerations-ID för Azure
- Ett unikt namn för din webbapp.
- En plats. Som standard är platsen
eastus. Du kan hämta regionkoder genom att köra kommandot Get-AzLocation.
Viktigt
Använd endast gemener och siffror som namn på din webbapp. Inga blanksteg. Inga specialtecken.
När distributionen är klar går du till exempelprogrammet som körs genom att
https://<yourappname>.azurewebsites.netöppna i ett webbläsarfönster.Om du vill se programmets komponenter loggar du in på Azure Portal går till resursgruppen som du skapade.
Nu när du har distribuerat och kört programmet kan du komma igång med att köra ditt första belastningstest mot det.
Konfigurera och skapa belastningstestet
I det här avsnittet skapar du ett belastningstest med hjälp av ett befintligt Apache JMeter-testskript.
Konfigurera Apache JMeter-skriptet
Exempelprogrammets källdatabas innehåller ett Apache JMeter-skript med namnet SampleApp.jmx . Det här skriptet utför tre API-anrop på varje test-iteration:
add– Utför en datainfogningsåtgärd på Cosmos DB för antalet besökare i webbappen.get– Utför en GET-åtgärd från Cosmos DB för att hämta antalet.lasttimestamp– Uppdaterar tidsstämpeln sedan den senaste användaren gick till webbplatsen.
I det här avsnittet uppdaterar du Apache JMeter-skriptet med URL:en för exempelwebbappen som du distribuerade i föregående avsnitt.
Innan du börjar kontrollerar du att katalogen för den klonade exempelappen är öppen i VS Code.
Öppna katalogen för den klonade exempelappen i VS Code.
cd nodejs-appsvc-cosmosdb-bottleneck code .Öppna
SampleApp.jmx.Sök efter
<stringProp name="HTTPSampler.domain">.Du ser tre instanser av
<stringProp name="HTTPSampler.domain">i filen.Ersätt värdet med URL:en för det nyligen distribuerade exempelprogrammet i alla tre instanserna.
<stringProp name="HTTPSampler.domain">yourappname.azurewebsites.net</stringProp>Uppdatera värdet på alla tre platserna. Ta inte med
https://prefixet .Spara ändringarna och stäng filen.
Skapa Azure Load Testing-resursen
Resursen Belastningstestning är en resurs på den översta nivån för dina belastningstestningsaktiviteter. Den här resursen är en central plats där du kan visa och hantera belastningstester, testresultat och andra relaterade artefakter.
Om du redan har en resurs för belastningstest hoppar du över det här avsnittet och fortsätter till Skapa ett belastningstest.
Om du ännu inte har en resurs för belastningstestning skapar du en nu:
Logga in på Azure Portal med autentiseringsuppgifterna för din Azure-prenumeration.
Välj menyknappen i det övre vänstra hörnet i portalen och välj sedan + Skapa en resurs.
Använd sökfältet för att hitta Azure Load Testing.
Välj Azure Load Testing (Azure-belastningstestning).
I fönstret Azure Load Testing (Azure Load Testing) väljer du Skapa.
Ange följande information för att konfigurera din nya azure-resurs för belastningstestning.
Fält Beskrivning Prenumeration Välj den Azure-prenumeration som du vill använda för den här Azure Load Testing-resursen. Resursgrupp Välj en befintlig resursgrupp eller välj Skapa ny och ange sedan ett unikt namn för den nya resursgruppen. Name Ange ett unikt namn för att identifiera din Azure Load Testing-resurs.
Namnet får inte innehålla specialtecken, till exempel \ /""[]: |<>+=;,?*@& eller blanksteg. Namnet får inte börja med "_" eller sluta med "." eller "-". Längden måste vara mellan 1 och 64 tecken.Location Välj en geografisk plats som värd för din Azure Load Testing-resurs.
Anteckning
Du kan också konfigurera mer information på fliken Taggar. Taggar är namn/värde-par som gör att du kan kategorisera resurser och visa konsoliderad fakturering genom att tillämpa samma tagg på flera resurser och resursgrupper.
När du har konfigurerat resursen väljer du Granska + skapa.
Granska alla konfigurationsinställningar och välj Skapa för att starta distributionen av Azure Load Testing-resursen.
När processen är klar visas ett meddelande om att distributionen lyckades.
Om du vill visa den nya resursen väljer du Gå till resurs.
På resurssidan Azure Load Testing (Azure Load Testing) väljer du Access Control (IAM) och sedan Lägg till rolltilldelning.
Innan du kan hantera belastningstester i Azure Load Testing-resursen måste du ha rätt åtkomstbehörigheter.
Du måste tilldela rollen Load Test Contributor (Belastningstestdeltagare) eller Load Test Owner (Belastningstestägare) till ditt Azure-konto. Mer information om hur du tilldelar roller finns i Tilldela Azure-roller med hjälp av Azure Portal.
Viktigt
Om du vill tilldela Azure-roller måste du
Microsoft.Authorization/roleAssignments/writeha behörigheter, till exempel Administratör för användaråtkomst eller Ägare. Det kan ta några minuter innan rolltilldelningarna blir aktiva för ditt konto. Uppdatera webbsidan för användargränssnittet för att återspegla de uppdaterade behörigheterna.
I nästa avsnitt skapar du ett belastningstest i belastningstestresursen för exempelappen.
Skapa ett belastningstest
Gå till belastningstestresursen och välj Skapa nytt test i kommandofältet.
På fliken Grundläggande anger du information om Testnamn och Testbeskrivning. Du kan också markera rutan Kör test när du har skapat det för att automatiskt starta belastningstestet när du har skapat det.
På fliken Testplan väljer du testmetoden JMeter-skript och sedan testskriptet SampleApp.jmx från den klonade exempelprogramkatalogen. Välj sedan Upload för att ladda upp filen till Azure och konfigurera belastningstestet.
Du kan också välja och ladda upp ytterligare Apache JMeter-konfigurationsfiler.
Konfigurera följande information på fliken Läs in. Du kan lämna standardvärdena för den här självstudien:
Inställning Värde Beskrivning Motorinstanser 1 Antalet parallella testmotorer som kör Apache JMeter-skriptet.
På fliken Övervakning anger du de programkomponenter som du vill övervaka resursmåtten för. Välj Lägg till/ändra för att hantera listan över programkomponenter.
Välj Granska + skapa, granska alla inställningar och välj Skapa.
Kör belastningstestet i Azure Portal
I det här avsnittet använder du Azure Portal att starta belastningstestet som du skapade tidigare manuellt. Om du har markerat rutan Kör test efter skapandet körs testet redan.
Välj Tester för att visa listan över tester och välj sedan det test som du skapade tidigare.
Tips
Du kan använda sökrutan och filtret För tidsintervall för att begränsa antalet tester.
På sidan testkörningar väljer du Kör eller Kör test.
Välj Kör på körningssammanfattningssidan för att starta belastningstestet. Sedan visas listan över testkörningar.
Azure Load Testing börjar övervaka och visa programmets servermått på instrumentpanelen.
Du kan se strömningsmåtten på klientsidan medan testet körs. Som standard uppdateras resultatet automatiskt var femte sekund.
Du kan använda flera filter eller aggregera resultaten till olika percentiler för att anpassa diagrammen.
Tips
Du kan när som helst stoppa ett belastningstest från det Azure Portal användargränssnittet genom att välja Stoppa.
Vänta tills belastningstestet har avslutats helt innan du fortsätter till nästa avsnitt.
Identifiera prestandaflaskhalsar
I det här avsnittet analyserar du belastningstestresultatet för att identifiera flaskhalsar i programmets prestanda. Granska måtten på både klientsidan och serversidan för att fastställa rotorsaken till problemet.
Ta först en titt på måtten på klientsidan. Du ser att den 90:e percentilen för måttet Svarstid för API-begärandena och
addär högre än förgetlasttimestampAPI:et.
Du kan se ett liknande mönster för Fel, där
lasttimestampAPI:et har färre fel än de andra API:erna.
Resultatet av
addAPI:ernagetoch är liknande, medanlasttimestampAPI:et fungerar annorlunda. Orsaken kan vara databasrelaterad, eftersom både API:ernaaddochgetomfattar databasåtkomst.Om du vill undersöka det här problemet mer detaljerat rullar du ned till avsnittet Måttinstrumentpanel på serversidan.
Måtten på serversidan visar detaljerad information om dina Azure-programkomponenter: Azure App Service Plan, Azure App Service Web App Azure Cosmos DB.
I måtten Azure App Service plan kan du se att måtten CPU-procent och Minnesprocent ligger inom ett acceptabelt intervall.
Ta nu en titt på Cosmos DB mått på serversidan.
Du ser att måttet Normaliserad RU-förbrukning visar att databasen snabbt kördes med 100 % resursutnyttjande. Den höga resursanvändningen kan ha orsakat databasbegränsningsfel och ökade svarstider för api:erna
addochget.Du kan också se att måttet Etablerat dataflöde för den Azure Cosmos DB instansen har ett maximalt dataflöde på 400 RU:er. Genom att öka det etablerade dataflödet i databasen kan prestandaproblemet lösas.
I nästa avsnitt ökar du det etablerade dataflödet för databasen och kontrollerar sedan om flaskhalsen för programmets prestanda har lösts.
Öka databasens dataflöde
I det här avsnittet allokerar du fler resurser till databasen för att lösa flaskhalsen för prestanda.
Du Azure Cosmos DB databasens RU-skalningsinställning.
Gå till den Cosmos DB som du etablerade som en del av distributionen av exempelprogrammet.
Välj Datautforskaren fliken.
Välj alternativet & Inställningar skala och uppdatera dataflödesvärdet till 1200.
Välj Spara för att bekräfta ändringarna.
Verifiera prestandaförbättringarna
Nu när du har ökat databasens dataflöde ska du köra belastningstestet igen och kontrollera att prestandaresultatet har förbättrats.
Gå tillbaka till sidan med information om testkörningen, välj Kör igen och välj sedan Kör på sammanfattningssidan för körningen.
Du ser en ny testkörningspost med statuskolumnen som går igenom tillståndet Etablering, Kör och Klar. Välj när som helst testkörningsobjektet för att övervaka hur belastningstestet fortskrider.
När belastningstestet är klart kontrollerar du Svarstid och Fel för måtten på klientsidan.
Kontrollera sedan måtten på serversidan Azure Cosmos DB att prestandan har förbättrats.
Du ser att den normala Cosmos DB RU-förbrukningen nu är långt under 100 %.
När du har ändrat skalningsinställningarna för databasen ser du nu följande:
- Svarstiden för
addAPI:ernagetoch har förbättrats. - Den normaliserade förbrukningen av RU ligger väl under den maximala gränsen.
Därför har programmets övergripande prestanda förbättrats.
Rensa resurser
Viktigt
Du kan använda de resurser som du har skapat som förutsättningar för andra självstudier och instruktionsartiklar om Azure Load Testing.
Om du inte planerar att använda någon av de resurser som du har skapat kan du ta bort dem så att du inte debiteras ytterligare.
I Azure-portalen:
Välj menyknappen i det övre vänstra hörnet och välj sedan Resursgrupper.
Välj resursgruppen som du skapade från listan.
Välj Ta bort resursgrupp.

Ange resursgruppsnamnet. Välj sedan Ta bort.
Alternativt kan du använda Azure CLI.
az group delete --name <yourresourcegroup>Kom ihåg att om du tar bort resursgruppen så tas alla resurser i den bort.
Nästa steg
Gå vidare till nästa självstudie om du vill lära dig hur du ställer in ett automatiserat arbetsflöde för regressionstestning med hjälp av Azure Pipelines eller GitHub Actions.