Ćwiczenie — ręczne skalowanie aplikacji internetowej

Ukończone

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.

  1. Zaloguj się w witrynie Azure Portal.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób. Zostanie wyświetlone okienko Tworzenie zasobu .

  3. 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.

  4. 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ą
  5. Wybierz pozycję Przeglądanie + tworzenie>Utwórz. Poczekaj na utworzenie i wdrożenie aplikacji internetowej.

Kompilowanie i wdrażanie aplikacji internetowej

  1. 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.

    Zrzut ekranu przedstawiający ikonę usługi Cloud Shell na pasku zadań.

    git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
    
  2. Przejdź do folderu mslearn-hotel-reservation-system/src .

    cd mslearn-hotel-reservation-system/src
    
  3. 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
    
  4. Przygotuj aplikację internetową HotelReservationSystem do opublikowania.

    cd HotelReservationSystem
    dotnet publish -o website
    
  5. 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
    
  6. 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.

    Zrzut ekranu przedstawiający uruchomioną aplikację internetową z wyświetlonymi szczegółami rezerwacji numer 1 w formacie JSON.

Monitorowanie wydajności aplikacji internetowej przed zwiększeniem skali w poziomie

  1. Wróć do usługi Cloud Shell i przejdź do folderu ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient .

    cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
    
  2. Edytuj plik App.config w tym folderze przy użyciu edytora kodu.

    code App.config
    
  3. 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ą na 100.

  4. Zapisz plik, wybierając Ctrl+S.

  5. Edytuj plik HotelReservationSystemTestClient.csproj w tym folderze przy użyciu edytora kodu.

    code HotelReservationSystemTestClient.csproj
    
  6. Edytuj wiersz określający TargetFrameworkelement , tak aby był zgodny ze stosem środowiska uruchomieniowego wybranym dla aplikacji internetowej. Zmień wartość na TargetFramework 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>
    
  7. Zapisz plik, wybierając Ctrl+S i zamknij edytor kodu, naciskając Ctrl+Q.

  8. Ponownie skompiluj aplikację klienta testowego przy użyciu nowej konfiguracji.

    dotnet build
    
  9. 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
    

    Zrzut ekranu przedstawiający uruchomioną aplikację kliencką, wyświetlane odpowiedzi i komunikaty o błędach.

  10. W witrynie Azure Portal wybierz pozycję Przejdź do zasobu , aby otworzyć aplikację internetową.

  11. W okienku menu po lewej stronie wybierz pozycję Monitorowanie, a następnie wybierz pozycję Metryki.

  12. 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.

  13. 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.
  14. 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 .

  15. Na liście rozwijanej Nazwa pulpitu nawigacyjnego wprowadź nazwę aplikacji internetowej, a następnie wybierz pozycję Utwórz i przypnij.

  16. 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.

    Zrzut ekranu przedstawiający metryki wydajności dla aplikacji internetowej przed zwiększeniem skali w poziomie.

  17. Pozostaw aplikację kliencką uruchomioną podczas wykonywania następnego zadania.

Skalowanie aplikacji internetowej w poziomie i sprawdzanie poprawy wydajności

  1. 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).

  2. Na karcie Konfigurowanie wybierz pozycję Skalowanie ręczne i ustaw liczbę wystąpień na 5. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający zwiększanie skali w poziomie do pięciu wystąpień na stronie Konfigurowanie dla planu usługi App Service.

  3. 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.

  4. 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.

    Zrzut ekranu przedstawiający metryki wydajności dla aplikacji internetowej po przeprowadzeniu skalowania w poziomie do pięciu wystąpień.

  5. 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.

  6. Wróć do usługi Cloud Shell, która uruchamia aplikację kliencką. Wybierz Enter, aby zatrzymać aplikację.

  7. 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.