Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 exempel Node.js webbprogram 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 tutorialen lär du dig följande:
- 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 en Azure-prenumeration, skapa ett gratis konto innan du börjar.
- Azure CLI installerat på din lokala dator.
- Azure CLI version 2.2.0 eller senare. Kör
az --versionfö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 Portal 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. För den senaste versionen, se de senaste utgåvenoteringarna.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.gitExempelprogrammet ä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.ps1Ange följande i kommandotolken:
- ditt prenumerations-ID för Azure
- Ett unikt namn för webbappen.
- En plats. Som standard är
eastusplatsen . 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.neti 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 loginGå till exempelprogramkatalogen.
cd nodejs-appsvc-cosmosdb-bottleneckSkapa 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 $locationSkapa en Azure-belastningstestningsresurs med
az load createkommandot .<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 $locationSkapa ett belastningstest för att simulera belastningen mot exempelprogrammet med
az load test createkommandot .<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=$webappHostnameDet här kommandot använder konfigurationsfilen
Sampleapp.yamlför belastningstest, som refererar tillSampleApp.jmxJMeter-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 Portal 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.
Tips/Råd
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 Portal 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.
Tips/Råd
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
addapi-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
lasttimestamphar färre fel än de andra API:erna.
Resultatet av API:erna
addochgetär liknande, medan API:etlasttimestampbeter sig annorlunda. Orsaken kan vara databasrelaterad, eftersom både API:ernaaddochgetomfattar 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
addochget.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.
Välj Spara för att bekräfta ändringarna.
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
addochgethar 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 Portal:
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 namnet på resursgruppen. 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.