Znajdowanie i diagnozowanie problemów z wydajnością w usłudze Application Insights

Usługa Application Insights gromadzi dane telemetryczne z Twojej aplikacji, aby pomóc w analizie jej działania i wydajności. Tymi informacjami można się posłużyć przy identyfikowaniu stwierdzonych problemów albo identyfikowaniu usprawnień aplikacji, które miałyby największy wpływ na użytkowników. Ten samouczek przedstawia proces analizowania wydajności składników serwera aplikacji i perspektywy klienta.

Omawiane kwestie:

  • Identyfikowanie wydajności operacji po stronie serwera.
  • Analizowanie operacji serwera w celu określenia głównej przyczyny niskiej wydajności.
  • Identyfikowanie najwolniejszych operacji po stronie klienta.
  • Analizowanie szczegółów widoków stron przy użyciu języka zapytań.

Wymagania wstępne

W celu ukończenia tego samouczka:

  • Zainstaluj program Visual Studio 2019 z następującymi obciążeniami:
    • Tworzenie aplikacji na platformie ASP.NET i aplikacji internetowych
    • Tworzenie aplikacji na platformie Azure
  • Wdrażanie aplikacji .NET na platformie Azure i włączanie zestawu SDK usługi Application Insights
  • Włącz profiler usługi Application Insights dla swojej aplikacji.

Logowanie do platformy Azure

Zaloguj się w witrynie Azure Portal.

Identyfikowanie wolnych operacji serwera

Usługa Application Insights zbiera informacje o wydajności różnych operacji w aplikacji. Identyfikując operacje z najdłuższym czasem trwania, można zdiagnozować potencjalne problemy lub zamierzyć bieżący rozwój, aby poprawić ogólną wydajność aplikacji.

  1. Wybierz pozycję Application Insights, a następnie wybierz swoją subskrypcję.

  2. Aby otworzyć panel Wydajność , wybierz pozycję Wydajność w menu Zbadaj lub wybierz wykres Czas odpowiedzi serwera .

    Zrzut ekranu przedstawiający widok wydajności.

  3. Ekran Wydajność przedstawia liczbę i średni czas trwania każdej operacji dla aplikacji. Te informacje służą do identyfikowania tych operacji, które mają największy wpływ na użytkowników. W tym przykładzie dobrymi kandydatami do przyjrzenia się bliżej są operacje GET Customers/Details i GET Home/Index z powodu ich względnie długiego czasu trwania i względnie dużej liczby wywołań. Inne operacje mogą mieć dłuższy czas trwania, ale rzadko były wywoływane, więc efekt ich poprawy byłby minimalny.

    Zrzut ekranu przedstawiający panel Serwer wydajności.

  4. Wykres przedstawia obecnie średni czas trwania wybranych operacji w czasie. Możesz przełączyć się na 95. percentyl, aby znaleźć problemy z wydajnością. Dodaj interesujące Cię operacje, przypinając je do grafu. Wykres pokazuje, że istnieją pewne szczyty, które warto zbadać. Aby je jeszcze bardziej odizolować, zmniejsz przedział czasu grafu.

    Zrzut ekranu przedstawiający operacje przypinania.

  5. Panel wydajności po prawej stronie pokazuje rozkład czasów trwania różnych żądań dla wybranej operacji. Zmniejsz okno, aby rozpocząć w okolicy 95. percentyla. Karta Szczegółowe informacje o najważniejszych 3 zależnościach może na pierwszy rzut oka powiedzieć, że zależności zewnętrzne prawdopodobnie przyczyniają się do powolnych transakcji. Wybierz przycisk z liczbą przykładów, aby wyświetlić listę przykładów. Następnie wybierz dowolny przykład, aby wyświetlić szczegóły transakcji.

  6. Na pierwszy rzut oka widać, że wywołanie tabeli platformy Azure Fabrikamaccount przyczynia się najbardziej do całkowitego czasu trwania transakcji. Zobaczysz też, że wyjątek spowodował jego niepowodzenia. Wybierz dowolny element z listy, aby wyświetlić jego szczegóły po prawej stronie.

    Zrzut ekranu przedstawiający szczegóły transakcji kompleksowej operacji.

  7. Profiler pomaga uzyskać dalszą diagnostykę na poziomie kodu, pokazując rzeczywisty kod uruchomiony dla operacji i czas wymagany dla każdego kroku. Niektóre operacje mogą nie mieć śladu, ponieważ profiler jest uruchamiany okresowo. Z upływem czasu coraz więcej operacji powinno mieć ślady. Aby uruchomić profiler dla operacji, wybierz pozycję Ślady profilera.

  8. Ślad pokazuje poszczególne zdarzenia dla każdej operacji, dzięki czemu można zdiagnozować główną przyczynę dla czasu trwania ogólnej operacji. Wybierz jeden z najlepszych przykładów, który ma najdłuższy czas trwania.

  9. Wybierz pozycję Ścieżka gorąca , aby wyróżnić konkretną ścieżkę zdarzeń, które przyczyniają się najbardziej do całkowitego czasu trwania operacji. W tym przykładzie widać, że najwolniejsze wywołanie pochodzi z FabrikamFiberAzureStorage.GetStorageTableData metody . Część, która zajmuje najwięcej czasu, to CloudTable.CreateIfNotExist metoda . Jeśli ten wiersz kodu jest wykonywany za każdym razem, gdy funkcja zostanie wywołana, niepotrzebne wywołanie sieciowe i zasoby procesora CPU będą używane. Najlepszym sposobem naprawienia kodu jest umieszczenie tego wiersza w jakiejś metodzie uruchamiania, która jest wykonywana tylko raz.

    Zrzut ekranu przedstawiający szczegóły profilera.

  10. Porada dotycząca wydajności w górnej części ekranu obsługuje ocenę, że nadmierny czas trwania jest spowodowany oczekiwaniem. Wybierz link oczekujących na dokumentację dotyczącą interpretowania różnych typów zdarzeń.

    Zrzut ekranu przedstawiający poradę dotyczącą wydajności.

  11. Aby przeprowadzić dalszą analizę, wybierz pozycję Pobierz ślad , aby pobrać ślad. Te dane można wyświetlić za pomocą narzędzia PerfView.

Używanie danych dzienników dla serwera

Dzienniki udostępnia zaawansowany język zapytań, którego można użyć do analizowania wszystkich danych zebranych przez usługę Application Insights. Za pomocą tej funkcji można przeprowadzać głęboką analizę danych dotyczących żądań i wydajności.

  1. Wróć do panelu szczegółów operacji i wybierz pozycję Widok dziennikóww obszarze Dzienniki (Analiza).

  2. Zostanie otwarty ekran Dzienniki z zapytaniem dla każdego z widoków w panelu. Zapytania te można uruchomić w proponowanej formie lub dostosować do własnych wymagań. Pierwsze zapytanie pokazuje czas trwania operacji w miarę upływu czasu.

    Zrzut ekranu przedstawiający zapytanie dotyczące dzienników.

Identyfikowanie wolnych operacji klienta

Oprócz identyfikowania procesów serwera do zoptymalizowania, usługa Application Insights może analizować perspektywę przeglądarek klienta. Te informacje mogą pomóc zidentyfikować potencjalne ulepszenia składników klienta, a nawet zidentyfikować problemy z różnymi przeglądarkami lub różnymi lokalizacjami.

  1. Wybierz pozycję Przeglądarka w obszarze Zbadaj , a następnie wybierz pozycję Wydajność przeglądarki. Alternatywnie wybierz pozycję Wydajność w obszarze Zbadaj i przejdź do karty Przeglądarka , wybierając przycisk przełącznika Serwer/przeglądarka w prawym górnym rogu, aby otworzyć podsumowanie wydajności przeglądarki. Ten widok zawiera wizualne podsumowanie różnych telemetrii aplikacji z perspektywy przeglądarki.

    Zrzut ekranu przedstawiający podsumowanie przeglądarki.

  2. Wybierz jedną z nazw operacji, wybierz przycisk Przykłady w prawym dolnym rogu, a następnie wybierz operację. Szczegóły kompleksowej transakcji są otwierane po prawej stronie, gdzie można wyświetlić właściwości widoku strony. Możesz wyświetlić szczegóły klienta żądającego strony, w tym typ przeglądarki i jej lokalizację. Te informacje mogą pomóc w określeniu, czy występują problemy z wydajnością powiązane z konkretnymi typami klientów.

    Zrzut ekranu przedstawiający właściwości widoku strony.

Używanie danych dzienników dla klienta

Podobnie jak w przypadku danych zebranych na potrzeby wydajności serwera usługa Application Insights udostępnia wszystkie dane klienta do szczegółowej analizy przy użyciu dzienników.

  1. Wróć do podsumowania przeglądarki i wybierz pozycję Widok dziennikóww obszarze Dzienniki (Analiza).

  2. Zostanie otwarty ekran Dzienniki z zapytaniem dla każdego z widoków w panelu. Pierwsze zapytanie pokazuje czas trwania dla różnych wyświetleń stron w miarę upływu czasu.

    Zrzut ekranu przedstawiający ekran Dzienniki.