Ćwiczenie — ręczne skalowanie aplikacji internetowej
Skalę systemu należy zwiększyć w poziomie, gdy spodziewany jest wzrost ruchu. Można również zwiększać skalę w poziomie w odpowiedzi na spadek wydajności.
W przykładzie systemu rezerwacji hotelowych zwiększasz liczbę wystąpień aplikacji internetowej, gdy przewidujesz dodatkowy ruch ze względu na specjalne wydarzenie, ofertę specjalną lub sezonowe wahania. Gdy zapotrzebowanie zmaleje, możesz przeskalować system z powrotem.
W tym ćwiczeniu utworzysz plan usługi App Service i wdrożysz aplikację internetową przy użyciu tego planu. Monitorujesz wydajność aplikacji internetowej pod obciążeniem. Następnie przeprowadź skalowanie aplikacji w poziomie i sprawdź, czy plan poprawił wydajność aplikacji.
W ćwiczeniu użyto przykładowej aplikacji internetowej, w której został zaimplementowany internetowy interfejs API. Operacje POST i GET protokołu HTTP, które umożliwiają tworzenie i pobieranie rezerwacji klientów dla witryny internetowej rezerwacji hotelowych, są udostępniane przez internetowy interfejs API. Rezerwacje nie są zapisywane. Operacja GET po prostu pobiera fikcyjne dane.
Ćwiczenie uruchamia także aplikację kliencką, która symuluje kilku użytkowników jednocześnie wyzwalających operacje POST i GET. Ta aplikacja udostępnia obciążenie używane do testowania wydajności aplikacji internetowej przed skalowaniem i po nim.
Tworzenie planu usługi App Service i aplikacji internetowej
Ważne
Do wykonania tego ćwiczenia potrzebna jest własna subskrypcja platformy Azure. Ponadto mogą zostać naliczone opłaty. Jeśli nie masz jeszcze subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Zaloguj się w witrynie Azure Portal.
W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób. Zostanie wyświetlone okienko Tworzenie zasobu .
W okienku menu po lewej stronie w obszarze Kategorie wybierz pozycję Sieć Web, wyszukaj i wybierz pozycję Aplikacja internetowa, a następnie wybierz pozycję Utwórz. Zostanie wyświetlone okienko Tworzenie aplikacji internetowej.
Na karcie Podstawy wprowadź następujące wartości dla każdego ustawienia.
Uwaga
Aplikacja internetowa musi mieć unikatową nazwę. Sugerujemy użycie nazwy podobnej do następującej: <Twoje nazwisko lub inicjały>hotelsystem. Używaj tej nazwy wszędzie tam, gdzie zobaczysz ciąg
<your-webapp-name>
w tym ćwiczeniu.Ustawienie Wartość Szczegóły projektu Subskrypcja Wybierz subskrypcję platformy Azure, której chcesz użyć w ramach tego ćwiczenia Grupa zasobów Wybierz link Utwórz nową i wprowadź nową grupę zasobów o nazwie mslearn-scale Szczegóły wystąpienia Nazwisko Zobacz Uwaga przed tabelą. Wprowadź unikatową nazwę, którą można zapamiętać w dalszej części tego ćwiczenia Publikowanie Kod Stos środowiska uruchomieniowego .NET 6 (LTS) System operacyjny Windows Region (Region) Zaakceptuj wartość domyślną Plan usługi App Service Plan systemu Windows Zaakceptuj wartość domyślną Plan cenowy Zaakceptuj wartość domyślną Wybierz pozycję Przeglądanie + tworzenie>Utwórz. Poczekaj na utworzenie i wdrożenie aplikacji internetowej.
Kompilowanie i wdrażanie aplikacji internetowej
Na pasku zadań platformy Azure wybierz ikonę usługi Cloud Shell, aby otworzyć usługę AzureCloud Shell, a następnie uruchom następujące polecenie, aby pobrać kod źródłowy systemu rezerwacji hotelowych.
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
Przejdź do folderu mslearn-hotel-reservation-system/src .
cd mslearn-hotel-reservation-system/src
Skompiluj aplikacje dla systemu hotelowego. Istnieją dwie aplikacje: aplikacja internetowa, która implementuje internetowy interfejs API dla systemu i aplikację kliencką używaną do testowania obciążenia aplikacji internetowej.
dotnet build
Przygotuj aplikację internetową HotelReservationSystem do opublikowania.
cd HotelReservationSystem dotnet publish -o website
Przejdź do folderu website, który zawiera opublikowane pliki. Spakuj pliki, a następnie wdróż je w aplikacji internetowej utworzonej w poprzednim zadaniu. Skopiuj poniższy kod do Notatnika i zastąp
<your-webapp-name>
ciąg nazwą aplikacji internetowej, a następnie wklej edytowany blok kodu w usłudze Cloud Shell i uruchom go.cd website zip website.zip * az webapp deploy --src-path website.zip --name <your-webapp-name> --resource-group mslearn-scale
W przeglądarce internetowej przejdź do strony
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
. Zostanie wyświetlony dokument JSON zawierający szczegóły rezerwacji numer 1.
Monitorowanie wydajności aplikacji internetowej przed zwiększeniem skali w poziomie
Wróć do usługi Cloud Shell i przejdź do folderu ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient .
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
Edytuj plik App.config w tym folderze przy użyciu edytora kodu.
code App.config
Usuń komentarz z wiersza, który określa
ReservationsServiceURI
, i zastąp wartość TWOJA NAZWA WITRYNY INTERNETOWEJ nazwą aplikacji internetowej. Plik powinien wyglądać podobnie do tego przykładu.<?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>
Uwaga
Ustawienie
NumClients
w tym pliku określa liczbę klientów, którzy mogą jednocześnie spróbować nawiązać połączenie z aplikacją internetową i wykonać pracę. Praca polega na utworzeniu rezerwacji, a następnie uruchomieniu zapytania w celu pobrania szczegółów rezerwacji. Wszystkie użyte dane są fałszywe. Nie są one nigdzie utrwalane. Pozostaw tę wartość ustawioną na100
.Zapisz plik, wybierając Ctrl+S.
Edytuj plik HotelReservationSystemTestClient.csproj w tym folderze przy użyciu edytora kodu.
code HotelReservationSystemTestClient.csproj
Edytuj wiersz określający
TargetFramework
element , tak aby był zgodny ze stosem środowiska uruchomieniowego wybranym dla aplikacji internetowej. Zmień wartość naTargetFramework
netcoreapp7.0
. Plik powinien wyglądać podobnie do tego przykładu.<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>
Zapisz plik, wybierając Ctrl+S i zamknij edytor kodu, naciskając Ctrl+Q.
Ponownie skompiluj aplikację klienta testowego przy użyciu nowej konfiguracji.
dotnet build
Uruchom aplikację kliencką. Podczas uruchamiania klientów, tworzenia rezerwacji i uruchamiania zapytań jest wyświetlanych kilka komunikatów. Pozwól systemowi działać przez kilka minut. Odpowiedzi są powolne i wkrótce żądania klientów zaczynają pracować w trybie fail z błędami HTTP 408 (Limit czasu).
dotnet run
W witrynie Azure Portal wybierz pozycję Przejdź do zasobu , aby otworzyć aplikację internetową.
W okienku menu po lewej stronie wybierz pozycję Monitorowanie, a następnie wybierz pozycję Metryki.
Po prawej stronie paska menu okienka aplikacji internetowej wybierz zakres czasu lokalnego: Ostatnie 24 godziny (automatyczne), a następnie wybierz pozycję Ostatnie 30 minut, a następnie wybierz pozycję Zastosuj.
W okienku w obszarze Tytuł wykresu dodaj następujące metryki do wykresu:
- Wybierz pozycję Dodaj metryki, a następnie na liście rozwijanej Metryka wybierz pozycję Czas procesora CPU. W obszarze Agregacja wybierz pozycję Suma.
- Wybierz pozycję Dodaj metryki, a następnie na liście rozwijanej Metryka wybierz pozycję Błędy serwera HTTP. W obszarze Agregacja wybierz pozycję Suma.
- Wybierz pozycję Dodaj metryki, a następnie na liście rozwijanej Metryka wybierz pozycję Http 4xx. W obszarze Agregacja wybierz pozycję Suma.
- Wybierz pozycję Dodaj metryki, a następnie na liście rozwijanej Metryka wybierz pozycję Czas odpowiedzi. W obszarze Agregacja ustaw wartość Średnia.
Na pasku menu po prawej stronie wybierz pozycję Przypnij do pulpitu nawigacyjnego. Zostanie wyświetlone okienko Przypnij do pulpitu nawigacyjnego . Wybierz kartę Utwórz nowy .
Na liście rozwijanej Nazwa pulpitu nawigacyjnego wprowadź nazwę aplikacji internetowej, a następnie wybierz pozycję Utwórz i przypnij.
Zezwól systemowi na stabilizację przez pięć minut, a następnie zanotuj czas procesora CPU, liczbę błędów HTTP 4xx i średni czas odpowiedzi. Powinna zostać wyświetlona znaczna liczba błędów HTTP 4xx. Te błędy to błędy przekroczenia limitu czasu HTTP 408. Średni czas odpowiedzi wynosi kilka sekund. W zależności od tego, jak serwer internetowy radzi sobie z obciążeniem, okazjonalnie może zostać wyświetlony błąd serwera HTTP.
Pozostaw aplikację kliencką uruchomioną podczas wykonywania następnego zadania.
Skalowanie aplikacji internetowej w poziomie i sprawdzanie poprawy wydajności
W witrynie Azure Portal wybierz nazwę aplikacji internetowej (App Service), a następnie w okienku menu po lewej stronie w obszarze Ustawienia wybierz pozycję Skaluj w poziomie (plan usługi App Service). Zostanie wyświetlone okienko Skalowanie w poziomie (plan usługi App Service).
Na karcie Konfigurowanie wybierz pozycję Skalowanie ręczne i ustaw liczbę wystąpień na 5. Wybierz pozycję Zapisz.
Przejdź do usługi Cloud Shell, która uruchamia aplikację kliencką. Powinna zostać wyświetlona mniejsza liczba żądań zakończonych niepowodzeniem z błędami, chociaż niektóre nadal przekraczają limit czasu.
Uruchom aplikację na kolejne pięć minut. Następnie przejdź do wykresu przedstawiającego metryki aplikacji na pulpicie nawigacyjnym w witrynie Azure Portal. Powinien zostać wyświetlony wzrost czasu procesora CPU znacznie, ponieważ jest teraz pięć razy więcej dostępnej mocy procesora CPU. Średni czas odpowiedzi powinien spaść, a liczba błędów HTTP 4xx również powinna się zmniejszyć. Poniższy wykres przedstawia typowy zestaw wyników. Punkt, w którym odnotowano zwiększanie skali w poziomie.
Jeśli chcesz trochę poeksperymentować, spróbuj zwiększyć liczbę wystąpień dla planu usługi App Service do 10. Maksymalna liczba wystąpień obsługiwanych przez warstwę S1 wynosi 10. Powinna być zauważalna dalsza poprawa czasu procesora CPU oraz odpowiednie skrócenie czasu odpowiedzi i zmniejszenie liczby błędów HTTP 4xx.
Wróć do usługi Cloud Shell, która uruchamia aplikację kliencką. Wybierz Enter, aby zatrzymać aplikację.
W witrynie Azure Portal ustaw liczbę wystąpień z powrotem na 1. Wybierz aplikację internetową, a następnie w okienku menu po lewej stronie wybierz pozycję Skaluj w poziomie (plan usługi App Service). Na karcie Konfigurowanie ustaw liczbę wystąpień na 1, a następnie wybierz pozycję Zapisz.