Udostępnij za pośrednictwem


Wykrywanie inteligentne — anomalie wydajności

Uwaga

Zasoby usługi Application Insights można migrować do wykrywania inteligentnego opartego na alertach (wersja zapoznawcza). Migracja tworzy reguły alertów w przypadku różnych modułów wykrywania inteligentnego. Utworzone reguły można konfigurować lub nimi zarządzać tak samo, jak w przypadku każdej innej reguły alertu Azure Monitor. Możesz również skonfigurować grupy akcji dla tych reguł, umożliwiając w ten sposób wiele metod podejmowania działań lub wyzwalania powiadomień w przypadku nowych wykryć.

Aby uzyskać więcej informacji na temat procesu migracji, zobacz Migracja alertów wykrywania inteligentnego.

Usługa Application Insights automatycznie analizuje wydajność aplikacji internetowej i może ostrzegać o potencjalnych problemach.

Ta funkcja nie wymaga specjalnej konfiguracji, poza konfigurowaniem aplikacji dla usługi Application Insights dla obsługiwanego języka. Jest ona aktywna, gdy aplikacja generuje wystarczającą ilość danych telemetrycznych.

Kiedy otrzymuję powiadomienie dotyczące wykrywania inteligentnego?

Usługa Application Insights wykryła, że wydajność aplikacji uległa pogorszeniu w jeden z następujących sposobów:

  • Obniżenie czasu odpowiedzi — aplikacja zaczęła odpowiadać na żądania wolniej niż kiedyś. Zmiana mogła być szybka, na przykład dlatego, że nastąpiła regresja w najnowszym wdrożeniu. Albo mogło to być stopniowe, być może spowodowane wyciekiem pamięci.
  • Obniżenie czasu trwania zależności — aplikacja wykonuje wywołania interfejsu API REST, bazy danych lub innej zależności. Zależność odpowiada wolniej niż kiedyś.
  • Wzorzec niskiej wydajności — aplikacja wydaje się mieć problem z wydajnością, który ma wpływ tylko na niektóre żądania. Na przykład strony ładują się wolniej na jednym typie przeglądarki niż inne; lub żądania są obsługiwane wolniej z jednego określonego serwera. Obecnie nasze algorytmy patrzą na czasy ładowania strony, czasy odpowiedzi żądania i czasy odpowiedzi zależności.

Aby ustalić punkt odniesienia normalnej wydajności, wykrywanie inteligentne wymaga co najmniej ośmiu dni wystarczającej ilości woluminu telemetrii. Po uruchomieniu aplikacji w tym okresie znaczące anomalie spowodują powiadomienie.

Czy moja aplikacja na pewno ma problem?

Nie, powiadomienie nie oznacza, że aplikacja na pewno ma problem. To po prostu sugestia dotyczącą czegoś, czemu możesz chcieć przyjrzeć się bliżej.

Jak mogę rozwiązać ten problem?

Powiadomienia obejmują informacje diagnostyczne. Oto przykład:

Oto przykład wykrywania czasu odpowiedzi serwera

  1. Klasyfikacja. Powiadomienie pokazuje liczbę użytkowników lub liczbę operacji, których dotyczy problem. Te informacje mogą pomóc w przypisaniu priorytetu do problemu.

  2. Zakres. Czy problem dotyczy całego ruchu, czy tylko niektórych stron? Czy jest ograniczony do konkretnych przeglądarek lub lokalizacji? Te informacje można uzyskać z powiadomienia.

  3. Diagnozowanie. Często informacje diagnostyczne w powiadomieniu sugerują charakter problemu. Jeśli na przykład czas odpowiedzi spowalnia, gdy szybkość żądań jest wysoka, może to oznaczać, że serwer lub zależności wykraczają poza ich pojemność.

    W przeciwnym razie otwórz okienko Wydajność w usłudze Application Insights. Znajdziesz tam dane profilera . Jeśli zgłaszane są wyjątki, możesz również wypróbować debuger migawek.

Konfigurowanie powiadomień e-mail

Powiadomienia wykrywania inteligentnego są domyślnie włączone. Są one wysyłane do użytkowników, którzy mają dostęp czytelnika monitorowania i współautora monitorowania do subskrypcji, w której znajduje się zasób usługi Application Insights. Aby zmienić powiadomienie domyślne, kliknij pozycję Konfiguruj w powiadomieniu e-mail lub otwórz ustawienia wykrywania inteligentnego w usłudze Application Insights.

Ustawienia wykrywania inteligentnego

  • Możesz wyłączyć domyślne powiadomienie i zastąpić je określoną listą wiadomości e-mail.

Wiadomości e-mail dotyczące anomalii wydajności wykrywania inteligentnego są ograniczone do jednej wiadomości e-mail dziennie na zasób usługi Application Insights. Wiadomość e-mail zostanie wysłana tylko wtedy, gdy w tym dniu wykryto co najmniej jeden nowy problem. Nie otrzymasz powtórzeń żadnego komunikatu.

Często zadawane pytania

  • Tak więc pracownicy firmy Microsoft patrzą na moje dane?

    • L.p. Usługa jest całkowicie automatyczna. Otrzymasz tylko powiadomienia. Dane są prywatne.
  • Czy analizujesz wszystkie dane zebrane przez usługę Application Insights?

    • Obecnie analizujemy czas odpowiedzi żądania, czas odpowiedzi zależności i czas ładowania strony. Analiza innych metryk znajduje się na naszej liście prac z niecierpliwością.
  • Jakie typy aplikacji działają w przypadku tego wykrywania?

    • Te degradacje są wykrywane w dowolnej aplikacji, która generuje odpowiednie dane telemetryczne. Jeśli usługa Application Insights została zainstalowana w aplikacji internetowej, żądania i zależności są śledzone automatycznie. Jednak w usługach zaplecza lub innych aplikacjach, jeśli wstawiono wywołania do funkcji TrackRequest() lub TrackDependency, wykrywanie inteligentne będzie działać w taki sam sposób.
  • Czy mogę utworzyć własne reguły wykrywania anomalii lub dostosować istniejące reguły?

  • Jak często odbywa się analiza?

    • Codziennie przeprowadzamy analizę danych telemetrycznych z poprzedniego dnia (pełny dzień w strefie czasowej UTC).
  • Czy zastępuje to alerty metryk?

    • L.p. Nie zobowiązujemy się do wykrywania każdego zachowania, które można rozważyć jako nietypowe.
  • Jeśli nie zrobię nic w odpowiedzi na powiadomienie, otrzymam przypomnienie?

    • Nie, otrzymujesz komunikat o każdym problemie tylko raz. Jeśli problem będzie się powtarzać, zostanie zaktualizowany w okienku kanału informacyjnego wykrywania inteligentnego.
  • Straciłem wiadomość e-mail. Gdzie można znaleźć powiadomienia w portalu?

    • W przeglądzie usługi Application Insights aplikacji kliknij kafelek Wykrywanie inteligentne . W tym miejscu znajdziesz wszystkie powiadomienia do 90 dni wstecz.

Jak mogę poprawić wydajność?

Powolne i nieudane odpowiedzi są jedną z największych frustracji dla użytkowników witryn internetowych, jak wiesz z własnego doświadczenia. Dlatego ważne jest, aby rozwiązać problemy.

Triage (klasyfikacja)

Po pierwsze, czy to ma znaczenie? Jeśli strona jest zawsze wolno ładowana, ale tylko 1% użytkowników witryny kiedykolwiek musi ją przejrzeć, być może masz ważniejsze kwestie do przemyślenia. Jednak jeśli tylko 1% użytkowników go otworzy, ale zgłasza wyjątki za każdym razem, może to być warte zbadania.

Użyj instrukcji wpływu, takiej jak użytkownicy, których dotyczy problem lub % ruchu, jako ogólnego przewodnika. Należy pamiętać, że może nie opowiadać całej historii. Zbierz inne dowody, aby potwierdzić.

Rozważ parametry problemu. Jeśli jest zależna od lokalizacji geograficznej, skonfiguruj testy dostępności, w tym ten region: w tym obszarze mogą występować problemy z siecią.

Diagnozowanie wolnych obciążeń stron

Gdzie występuje problem? Czy serwer działa wolno, czy strona jest zbyt długa, czy przeglądarka potrzebuje zbyt dużej ilości pracy, aby ją wyświetlić?

Otwórz okienko metryki Przeglądarki. Segmentowany ekran czasu ładowania strony przeglądarki pokazuje, gdzie trwa czas.

  • Jeśli czas wysyłania żądania jest wysoki, serwer odpowiada powoli lub żądanie jest postem z dużą ilością danych. Zapoznaj się z metrykami wydajności, aby zbadać czasy odpowiedzi.
  • Skonfiguruj śledzenie zależności, aby sprawdzić, czy spowolnienie jest spowodowane usługami zewnętrznymi, czy bazą danych.
  • Jeśli odpowiedź odbierająca jest dominująca, strona i jej części zależne — javaScript, CSS, obrazy itd. (ale nie są asynchronicznie ładowane dane) są długie. Skonfiguruj test dostępności i pamiętaj, aby ustawić opcję ładowania części zależnych. Gdy uzyskasz kilka wyników, otwórz szczegóły wyniku i rozwiń go, aby zobaczyć czasy ładowania różnych plików.
  • Wysoki czas przetwarzania klienta sugeruje, że skrypty działają powoli. Jeśli przyczyna nie jest oczywista, rozważ dodanie kodu chronometrażu i wysłanie czasów wywołań trackMetric.

Poprawianie wolnych stron

Istnieje sieć Web pełna porad dotyczących ulepszania odpowiedzi serwera i czasów ładowania stron, więc nie będziemy próbować powtarzać tego wszystkiego tutaj. Oto kilka wskazówek, o których prawdopodobnie już wiesz, aby myśleć:

  • Powolne ładowanie z powodu dużych plików: załaduj skrypty i inne części asynchronicznie. Użyj grupowania skryptów. Podziel stronę główną na widżety, które ładują dane oddzielnie. Nie wysyłaj zwykłego starego kodu HTML dla długich tabel: użyj skryptu, aby zażądać danych jako formatu JSON lub innego formatu kompaktowego, a następnie wypełnij tabelę. Istnieją doskonałe struktury ułatwiające wykonywanie takich zadań. (Obejmują one również duże skrypty, oczywiście).
  • Powolne zależności serwera: rozważ lokalizacje geograficzne składników. Jeśli na przykład używasz platformy Azure, upewnij się, że serwer internetowy i baza danych znajdują się w tym samym regionie. Czy zapytania pobierają więcej informacji niż są potrzebne? Czy buforowanie lub przetwarzanie wsadowe może pomóc?
  • Problemy z pojemnością: zapoznaj się z metrykami serwera czasami odpowiedzi i liczbami żądań. Jeśli czasy odpowiedzi są nieproporcjonalnie szczytowe w przypadku szczytów liczby żądań, prawdopodobnie serwery są rozciągnięte.

Obniżenie czasu odpowiedzi serwera

Powiadomienie o pogorszeniu czasu odpowiedzi informuje:

  • Czas odpowiedzi w porównaniu do normalnego czasu odpowiedzi dla tej operacji.
  • Liczba użytkowników, których dotyczy problem.
  • Średni czas odpowiedzi i 90. percentyl czasu odpowiedzi dla tej operacji w dniu wykrycia i siedem dni wcześniej.
  • Liczba żądań operacji w dniu wykrycia i siedem dni wcześniej.
  • Korelacja między degradacją tej operacji a degradacjami powiązanych zależności.
  • Linki ułatwiające diagnozowanie problemu.
    • Ślady profilera mogą pomóc w wyświetlaniu miejsca, w którym spędza się czas operacji. Link jest dostępny, jeśli istnieją przykłady śledzenia profilera dla tej operacji.
    • Raporty dotyczące wydajności w Eksploratorze metryk, w których można podzielić i przefiltrować zakres czasu/filtry dla tej operacji.
    • Wyszukaj to wywołanie, aby wyświetlić określone właściwości wywołania.
    • Raporty o błędach — jeśli liczba > 1 oznacza, że w tej operacji wystąpiły błędy, które mogły przyczynić się do obniżenia wydajności.

Obniżenie czasu trwania zależności

Nowoczesne aplikacje często przyjmują podejście projektowe mikrousług, które w wielu przypadkach w dużym stopniu polega na usługach zewnętrznych. Jeśli na przykład aplikacja korzysta z jakiejś platformy danych lub od krytycznego dostawcy usług, takiego jak usługi Azure AI.

Przykład powiadomienia o degradacji zależności:

Oto przykład wykrywania degradacji czasu trwania zależności

Zwróć uwagę, że informuje o tym:

  • Czas trwania w porównaniu z normalnym czasem odpowiedzi dla tej operacji
  • Liczba użytkowników, których dotyczy problem
  • Średni czas trwania i 90. percentyl czasu trwania dla tej zależności w dniu wykrycia i siedem dni przed
  • Liczba wywołań zależności w dniu wykrycia i siedem dni przed
  • Linki ułatwiające diagnozowanie problemu
    • Raporty wydajności w Eksploratorze metryk dla tej zależności
    • Wyszukaj te wywołania zależności, aby wyświetlić właściwości wywołań
    • Raporty o błędach — jeśli liczba > 1 oznacza, że w okresie wykrywania wystąpiły nieudane wywołania zależności, które mogły przyczynić się do obniżenia czasu trwania.
    • Otwórz usługę Analytics z zapytaniami, które obliczają ten czas trwania i liczbę zależności

Inteligentne wykrywanie wzorców o niskiej wydajności

Usługa Application Insights znajduje problemy z wydajnością, które mogą mieć wpływ tylko na część użytkowników lub tylko na użytkowników w niektórych przypadkach. Jeśli na przykład strona ładuje się wolniej w określonym typie przeglądarki w porównaniu z innymi, lub jeśli dany serwer obsługuje żądania wolniej niż inne serwery. Może również wykrywać problemy, które są skojarzone z kombinacjami właściwości, takich jak powolne ładowanie stron w jednym obszarze geograficznym dla klientów przy użyciu określonego systemu operacyjnego.

Takie anomalie są trudne do wykrycia, sprawdzając dane, ale są bardziej powszechne, niż można by pomyśleć. Często są one widoczne tylko wtedy, gdy klienci narzekają. Do tego czasu jest za późno: użytkownicy, których dotyczy problem, już przełączają się na swoich konkurentów!

Obecnie nasze algorytmy patrzą na czasy ładowania strony, czasy odpowiedzi żądania na serwerze i czasy odpowiedzi zależności.

Nie trzeba ustawiać żadnych progów ani konfigurować reguł. Algorytmy uczenia maszynowego i wyszukiwania danych służą do wykrywania nietypowych wzorców.

W alercie e-mail kliknij link, aby otworzyć raport diagnostyczny na platformie Azure

  • Gdy jest wyświetlany czas wykrycia problemu.
  • Opis problemu, który został wykryty, oraz cechy zestawu znalezionych zdarzeń, które wyświetlały zachowanie problemu.
  • Tabela porównuje zestaw o niskiej wydajności ze średnim zachowaniem wszystkich innych zdarzeń.

Kliknij łącza, aby otworzyć Eksploratora metryk, aby wyświetlić raporty, filtrowane według czasu i właściwości zestawu o niskiej wydajności.

Zmodyfikuj zakres czasu i filtry, aby eksplorować dane telemetryczne.

Następne kroki

Te narzędzia diagnostyczne ułatwiają inspekcję danych telemetrycznych z aplikacji:

Wykrywanie inteligentne jest automatyczne. Ale może chcesz skonfigurować jeszcze kilka alertów?