Övning – Skala en webbapp manuellt
Du bör skala ut ett system när du förväntar dig ökad trafik. Du kan även skala ut som svar på sänkt prestanda.
I exemplet med hotellbokningssystemet ökar du antalet instanser av webbappen när du förväntar dig extra trafik på grund av en speciell händelse, ett specialerbjudande eller säsongsvariationer. Du skalar då ner systemet när efterfrågan sjunker.
I den här övningen skapar du en App Service-plan och distribuerar en webbapp med hjälp av den här planen. Du övervakar webbappens prestanda under belastning. Skala sedan ut appen och kontrollera att planen förbättrade appens prestanda.
I den här övningen används en exempelwebbapp som implementerar ett webb-API. Webb-API:et exponerar HTTP-åtgärderna POST och GET som skapar och hämtar kundens bokningar för en webbplats för hotellbokningar. Bokningarna sparas inte. GET-åtgärden hämtar helt enkelt dummydata.
I den här övningen körs även en klientapp som simulerar flera användare som skickar POST- och GET-åtgärder samtidigt. Den här appen tillhandahåller den arbetsbelastning som du använder för att testa webbappens prestanda före och efter skalning.
Skapa en App Service-plan och en webbapp
Viktigt!
Du behöver en egen Azure-prenumeration för att utföra den här övningen, och avgifter kan tillkomma. Om du inte redan har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Logga in på Azure-portalen.
I menyn i Azure-portalen eller på sidan Start väljer du Skapa en resurs. Fönstret Skapa en resurs visas.
I det vänstra menyfönstret går du till Kategorier, väljer Webb, söker efter och väljer Webbapp och väljer sedan Skapa. Fönstret Skapa webbapp visas.
På fliken Grundläggande anger du följande värden för varje inställning.
Kommentar
Webbappen måste ha ett unikt namn. Vi föreslår att du använder till exempel <ditt namn eller dina initialer>hotelsystem. Använd det här namnet överallt där det står
<your-webapp-name>
i den här övningen.Inställning Värde Projektinformation Prenumeration Välj den Azure-prenumeration som du vill använda för den här övningen Resursgrupp Välj länken Skapa ny och ange en ny resursgrupp med namnet mslearn-scale Instansinformation Name Se Anteckning före tabell. Ange ett unikt namn som du kan komma ihåg för senare i den här övningen Publicera Kod CLR-stack .NET 6 (LTS) Operativsystem Windows Region Acceptera standard App Service-plan Windows-plan Acceptera standard Prisplan Acceptera standard Välj Granska + skapa>Skapa. Vänta tills webbappen har skapats och distribuerats.
Skapa och distribuera webbappen
I Aktivitetsfältet i Azure väljer du Cloud Shell-ikonen för att öppna AzureCloud Shell och kör följande kommando för att ladda ned källkoden för hotellets bokningssystem.
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
Gå till mappen mslearn-hotel-reservation-system/src .
cd mslearn-hotel-reservation-system/src
Skapa apparna för hotellsystemet. Det finns två appar: en webbapp som implementerar webb-API:et för systemet och en klientapp som du använder för att läsa in test av webbappen.
dotnet build
Förbered webbappen HotelReservationSystem för publicering.
cd HotelReservationSystem dotnet publish -o website
Gå till webbplatsmappen som innehåller de publicerade filerna. Komprimera (zippa) filerna och distribuera dem till webbappen som du skapade i föregående uppgift. Kopiera följande kod till Anteckningar och ersätt
<your-webapp-name>
med namnet på webbappen och klistra sedan in det redigerade kodblocket i Cloud Shell och kör det.cd website zip website.zip * az webapp deploy --src-path website.zip --name <your-webapp-name> --resource-group mslearn-scale
Gå till
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
i webbläsaren. Ett JSON-dokument visas som innehåller information om reservationsnummer 1.
Övervaka prestanda för webbappen före utskalning
Gå tillbaka till Cloud Shell och gå till mappen ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient .
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
Redigera filen App.config i den här mappen med hjälp av kodredigeraren.
code App.config
Ta bort kommentaren till raden som anger
ReservationsServiceURI
, och ersätt värdet DITT WEBBPLATSNAMN med namnet på webbappen. Filen bör se ut som i det här exemplet.<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="NumClients" value="100" /> <add key="ReservationsServiceURI" value="https://<your-webapp-name>.azurewebsites.net/" /> <add key="ReservationsServiceCollection" value="api/reservations" /> </appSettings> </configuration>
Kommentar
Inställningen
NumClients
i den här filen anger antalet klienter som samtidigt kan försöka ansluta till webbappen och utföra arbete. Arbetet består av att skapa en reservation och sedan köra en fråga för att hämta information om reservationen. Alla data som används är fiktiva. De sparas ingenstans. Låt det här värdet vara kvar på100
.Spara filen genom att välja Ctrl+S.
Redigera filen HotelReservationSystemTestClient.csproj i den här mappen med hjälp av kodredigeraren.
code HotelReservationSystemTestClient.csproj
Redigera raden som anger
TargetFramework
, så att den matchar den Körningsstack som du har valt för webbappen. Ändra värdetTargetFramework
tillnetcoreapp7.0
. Filen bör se ut som i det här exemplet.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp7.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\HotelReservationSystemTypes\HotelReservationSystemTypes.csproj" /> </ItemGroup> </Project>
Spara filen genom att välja Ctrl+S och stäng kodredigeraren genom att trycka på +Q.
Återskapa testklientappen med den nya konfigurationen.
dotnet build
Kör klientappen. Flera meddelanden visas när klienterna börjar köras, gör reservationer och kör frågor. Låt systemet köras i några minuter. Svaren är långsamma och snart börjar klientbegäranden misslyckas med HTTP 408-fel (timeout).
dotnet run
I Azure Portal väljer du Gå till resurs för att öppna webbappen.
I den vänstra menyrutan väljer du Övervakning och sedan Mått.
Välj tidsintervallet Lokal tid: Senaste 24 timmarna (automatisk) till höger i menyraden i webbappsfönstret, välj sedan Senaste 30 minuterna och välj sedan Använd.
Lägg till följande mått i diagrammet under Diagramrubrik i fönstret:
- Välj Lägg till mått och under listrutan Mått väljer du CPU-tid. För Sammansättning väljer du Summa.
- Välj Lägg till mått och under listrutan Mått väljer du Http Server-fel. För Sammansättning väljer du Summa.
- Välj Lägg till mått och under listrutan Mått väljer du Http 4xx. För Sammansättning väljer du Summa.
- Välj Lägg till mått och välj Svarstid under listrutan Mått. För Sammansättning väljer du Avg.
I den högra menyraden väljer du Fäst på instrumentpanelen. Fönstret Fäst på instrumentpanelen visas. Välj fliken Skapa ny .
I listrutan Instrumentpanelsnamn anger du webbappens namn och väljer sedan Skapa och fäst.
Låt systemet köras i fem minuter för att stabiliseras och notera sedan CPU-tiden, antalet HTTP 4xx-fel och den genomsnittliga svarstiden. Du bör se ett stort antal HTTP 4xx-fel. Dessa fel är HTTP 408 Timeout-fel. Den genomsnittliga svarstiden är flera sekunder. Det kan förekomma enstaka HTTP-serverfel beroende på hur väl webbservern klarar belastningen.
Låt klientappen fortsätta köras medan du genomför nästa uppgift.
Skala ut webbappen och verifiera prestandaförbättringen
I Azure Portal väljer du ditt webbappnamn (App Service) och i det vänstra menyfönstret går du till Inställningar och väljer Skala ut (App Service-plan). Fönstret Skala ut (App Service-plan) visas.
På fliken Konfigurera väljer du Manuell skalning och anger antalet instanser till 5. Välj Spara.
Växla till Cloud Shell som kör klientappen. Du bör se färre begäranden misslyckas med fel, även om vissa fortfarande överskrider tidsgränsen.
Kör appen i ytterligare fem minuter. Gå sedan till diagrammet som visar måtten för appen på instrumentpanelen i Azure Portal. Du bör se att cpu-tiden ökar dramatiskt eftersom det nu finns fem gånger mer processorkraft tillgänglig. Den genomsnittliga svarstiden bör minska och antalet HTTP 4xx-fel bör också minska. I följande diagram visas en vanlig uppsättning resultat. Punkten där utskalningen skedde är markerad.
Om du vill fortsätta experimentera kan du prova att öka instansantalet för App Service-planen till 10. Det maximala antalet instanser som stöds av S1-nivån är 10. Du bör märka ytterligare en ökning av CPU-tiden och en motsvarande minskning i svarstid och HTTP 4xx-fel.
Gå tillbaka till Cloud Shell som kör klientappen. Välj Retur för att stoppa appen.
I Azure Portal anger du antalet instanser tillbaka till 1. Välj din webbapp och välj Skala ut (App Service-plan) i det vänstra menyfönstret. På fliken Konfigurera anger du antalet instanser till 1 och väljer Spara.