Cvičení – ruční navýšení kapacity webové aplikace
Pokud očekáváte nárůst provozu, je dobré horizontálně navýšit kapacitu systému. Také to může být vhodné v případě, že dochází k poklesu výkonu.
V příkladu hotelového rezervačního systému zvýšíte počet instancí webové aplikace, když očekáváte dodatečný provoz kvůli zvláštní události, speciální nabídce nebo sezónním výkyvům. Jakmile poptávka poklesne, kapacitu systému opět horizontálně snížíte.
V tomto cvičení vytvoříte plán služby App Service a nasadíte webovou aplikaci pomocí tohoto plánu. Monitorujete výkon webové aplikace při zatížení. Pak vertikálně navýšíte kapacitu aplikace a ověřte, že plán zlepšil výkon aplikace.
V tomto cvičení se používá ukázková webová aplikace, která implementuje webové rozhraní API. To zpřístupňuje operace HTTP POST a GET, které vytvářejí a načítají rezervace zákazníků pro hotelový rezervační web. Rezervace se neuloží. Operace GET jednoduše načte fiktivní data.
Ve cvičení se také spouští klientská aplikace, která simuluje několik uživatelů vydávajících současně operace POST a GET. Tato aplikace poskytuje úlohu, kterou používáte k otestování výkonu webové aplikace před a po škálování.
Vytvoření plánu služby App Service a webové aplikace
Důležité
K provedení tohoto cvičení potřebujete vlastní předplatné Azure a mohou se vám účtovat poplatky. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet, než začnete.
Přihlaste se k portálu Azure.
V nabídce webu Azure Portal nebo na domovské stránce vyberte Vytvořit prostředek. Zobrazí se podokno Vytvořit prostředek .
V levém podokně nabídek v části Kategorie vyberte Web, vyhledejte a vyberte Webovou aplikaci a pak vyberte Vytvořit. Zobrazí se podokno Vytvořit webovou aplikaci .
Na kartě Základy zadejte pro každé nastavení následující hodnoty.
Poznámka:
Webová aplikace musí mít jedinečný název. Doporučujeme použít něco jako <vaše jméno nebo iniciály>hotelsystem. Tento název použijte vždy, když v tomto cvičení uvidíte
<your-webapp-name>
.Nastavení Hodnota Podrobnosti projektu Předplatné Vyberte předplatné Azure, které chcete použít pro toto cvičení. Skupina prostředků Vyberte odkaz Vytvořit nový a zadejte novou skupinu prostředků s názvem mslearn-scale. Podrobnosti o instanci Název Viz Poznámka před tabulkou. Zadejte jedinečný název, který si můžete zapamatovat později v tomto cvičení. Publikovat Kód Zásobník modulu runtime .NET 6 (LTS) Operační systém Windows Oblast Přijmout výchozí Plán služby App Service Plán Windows Přijmout výchozí Cenový plán Přijmout výchozí Vyberte Zkontrolovat a vytvořit>Vytvořit. Počkejte, až se webová aplikace vytvoří a nasadí.
Sestavení a nasazení webové aplikace
Na hlavním panelu Azure výběrem ikony Cloud Shellu otevřete AzureCloud Shell a spuštěním následujícího příkazu stáhněte zdrojový kód pro hotelový rezervační systém.
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
Přejděte do složky mslearn-hotel-reservation-system/src .
cd mslearn-hotel-reservation-system/src
Sestavte aplikace pro hotelový systém. Existují dvě aplikace: webová aplikace, která implementuje webové rozhraní API pro systém, a klientskou aplikaci, kterou používáte k zátěžovém testování webové aplikace.
dotnet build
Připravte webovou aplikaci HotelReservationSystem k publikování.
cd HotelReservationSystem dotnet publish -o website
Přejděte do složky website, která obsahuje publikované soubory. Zkomprimujte soubory do archivu ZIP a nasaďte je do webové aplikace, kterou jste vytvořili v předchozím úkolu. Zkopírujte následující kód do Poznámkového bloku a nahraďte
<your-webapp-name>
názvem vaší webové aplikace a vložte upravený blok kódu do Cloud Shellu a spusťte ho.cd website zip website.zip * az webapp deploy --src-path website.zip --name <your-webapp-name> --resource-group mslearn-scale
Ve webovém prohlížeči přejděte na adresu
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
. Zobrazí se dokument JSON, který obsahuje podrobnosti pro číslo rezervace 1.
Monitorování výkonu webové aplikace před horizontálním navýšením kapacity
Vraťte se do Cloud Shellu a přejděte do složky ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient .
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
Upravte soubor App.config v této složce pomocí editoru kódu.
code App.config
Odkomentujte řádek, který určuje
ReservationsServiceURI
hodnotu , a nahraďte hodnotu NÁZEV WEBU názvem vaší webové aplikace. Soubor by měl vypadat jako v tomto příkladu.<?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>
Poznámka:
Nastavení
NumClients
v tomto souboru určuje počet klientů, kteří se mohou současně pokusit připojit k webové aplikaci a provádět práci. Práce se skládá z vytvoření rezervace a následného spuštění dotazu, který načte podrobnosti o rezervaci. Veškerá použitá data jsou falešná. Nikam se neukládají. Nechte tuto hodnotu nastavenou na100
.Soubor uložte tak, že vyberete Ctrl+S.
Upravte soubor HotelReservationSystemTestClient.csproj v této složce pomocí editoru kódu.
code HotelReservationSystemTestClient.csproj
Upravte řádek, který určuje , aby odpovídal zásobníku
TargetFramework
modulu runtime, který jste vybrali pro webovou aplikaci.TargetFramework
Změňte hodnotu nanetcoreapp7.0
. Soubor by měl vypadat jako v tomto příkladu.<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>
Uložte soubor tak, že vyberete Ctrl+S a zavřete editor kódu stisknutím kláves Ctrl+Q.
Znovu sestavte testovací klientskou aplikaci doplněnou o novou konfiguraci.
dotnet build
Spusťte klientskou aplikaci. Když klienti začnou spouštět, zadávat rezervace a spouštět dotazy, zobrazí se několik zpráv. Nechte systém několik minut běžet. Odpovědi jsou pomalé a brzy začnou požadavky klientů selhávat s chybami HTTP 408 (Timeout).
dotnet run
Na webu Azure Portal vyberte Přejít k prostředku a otevřete webovou aplikaci.
V levém podokně nabídek vyberte Monitorování a pak vyberte Metriky.
Na pravé straně řádku nabídek podokna webové aplikace vyberte místní čas: Posledních 24 hodin (automatický) časový rozsah, pak vyberte Posledních 30 minut a pak vyberte Použít.
V podokně pod nadpisem grafu přidejte do grafu následující metriky:
- Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Čas procesoru. V případě agregace vyberte Součet.
- Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Chyby serveru HTTP. V případě agregace vyberte Součet.
- Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Http 4xx. V případě agregace vyberte Součet.
- Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Doba odezvy. V případě agregace vyberte Průměr.
V pravém řádku nabídek vyberte Připnout na řídicí panel. Zobrazí se podokno Připnout na řídicí panel . Vyberte kartu Vytvořit nový .
V rozevíracím seznamu Název řídicího panelu zadejte název webové aplikace a pak vyberte Vytvořit a připnout.
Počkejte, než se systém pět minut stabilizuje, a poznamenejte si čas procesoru, počet chyb HTTP 4xx a průměrnou dobu odezvy. Měl by se zobrazit velký počet chyb HTTP 4xx. Tyto chyby jsou chyby časového limitu HTTP 408. Průměrná doba odezvy je několik sekund. V závislosti na tom, jak server zvládá zatížení, můžete vidět občasnou chybu HTTP serveru.
Nechte klientskou aplikaci běžet a mezitím proveďte následující úlohu.
Horizontální navýšení kapacity webové aplikace a kontrola zlepšení výkonu
Na webu Azure Portal vyberte název webové aplikace (App Service) a v levém podokně nabídek v části Nastavení vyberte Horizontální navýšení kapacity (plán služby App Service). Zobrazí se podokno Horizontální navýšení kapacity (plán služby App Service).
Na kartě Konfigurovat vyberte ruční škálování a nastavte počet instancí na 5. Zvolte Uložit.
Přepněte do Cloud Shellu, na kterém běží klientská aplikace. Měli byste vidět méně neúspěšných požadavků s chybami, i když některé stále vyprší časový limit.
Nechcete aplikaci spuštěnou dalších 5 minut. Dále přejděte do grafu, který zobrazuje metriky aplikace na řídicím panelu na webu Azure Portal. Měli byste vidět, že se čas procesoru výrazně zvyšuje, protože teď je k dispozici pětkrát více výkonu procesoru. Průměrná doba odezvy by se měla snížit a také by se měl snížit počet chyb HTTP 4xx. Následující graf zobrazuje typický soubor výsledků. Bod, v němž došlo k horizontálnímu navýšení kapacity, je zvýrazněn.
Pokud chcete dále experimentovat, zkuste zvýšit počet instancí plánu služby App Service na 10. Maximální počet instancí podporovaných úrovní S1 je 10. Měli byste si všimnout dalšího nárůstu času procesoru a odpovídajícího zkrácení doby odezvy a poklesu počtu chyb HTTP 4xx.
Vraťte se do Cloud Shellu, na kterém běží klientská aplikace. Stisknutím klávesy Enter aplikaci zastavte.
Na webu Azure Portal nastavte počet instancí zpět na 1. Vyberte webovou aplikaci a v levém podokně nabídek vyberte Horizontální navýšení kapacity (plán služby App Service). Na kartě Konfigurace nastavte počet instancí na 1 a vyberte Uložit.