Rozwiązywanie problemów z powolną wydajnością aplikacji w usłudze Azure App Service
Ten artykuł ułatwia rozwiązywanie problemów z niską wydajnością aplikacji w usłudze aplikacja systemu Azure Service.
Jeśli potrzebujesz więcej pomocy w dowolnym momencie tego artykułu, możesz skontaktować się z ekspertami platformy Azure na forach MSDN Azure i Stack Overflow. Alternatywnie można również zgłosić zdarzenie pomoc techniczna platformy Azure. Przejdź do witryny pomocy technicznej platformy Azure i kliknij pozycję Uzyskaj pomoc techniczną.
Objaw
Podczas przeglądania aplikacji strony ładują się powoli i czasami upłynął limit czasu.
Przyczyna
Ten problem jest często spowodowany problemami na poziomie aplikacji, takimi jak:
- liczba żądań sieciowych trwa długo
- kod aplikacji lub zapytania bazy danych są nieefektywne
- wysokie wykorzystanie pamięci/procesora przez aplikację,
- awaria aplikacji z powodu wyjątku
Kroki rozwiązywania problemów
Rozwiązywanie problemów można podzielić na trzy odrębne zadania w kolejności sekwencyjnej:
Usługa App Service oferuje różne opcje w każdym kroku.
1. Obserwowanie i monitorowanie zachowania aplikacji
Śledzenie Kondycja usługi
Platforma Microsoft Azure jest uruchamiana za każdym razem, gdy występuje przerwa w działaniu usługi lub obniżenie wydajności. Kondycję usługi można śledzić w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz Śledzenie kondycji usługi.
Monitorowanie aplikacji
Ta opcja umożliwia sprawdzanie, czy aplikacja ma jakiekolwiek problemy. W bloku aplikacji kliknij kafelek Żądania i błędy . Blok Metryka zawiera wszystkie metryki, które można dodać.
Niektóre metryki, które mogą być monitorowane dla aplikacji, to
- Średni zestaw roboczy pamięci
- Czas odpowiedzi
- Czas procesora CPU
- Zestaw roboczy pamięci
- Żądania
Aby uzyskać więcej informacji, zobacz:
Monitorowanie stanu internetowego punktu końcowego
Jeśli używasz aplikacji w warstwie cenowej Standardowa , usługa App Service umożliwia monitorowanie dwóch punktów końcowych z trzech lokalizacji geograficznych.
Monitorowanie punktów końcowych konfiguruje testy internetowe z lokalizacji rozproszonych geograficznie, które testują czas odpowiedzi i czas działania internetowych adresów URL. Test wykonuje operację HTTP GET w internetowym adresie URL, aby określić czas odpowiedzi i czas pracy z każdej lokalizacji. Każda skonfigurowana lokalizacja uruchamia test co pięć minut.
Czas pracy jest monitorowany przy użyciu kodów odpowiedzi HTTP, a czas odpowiedzi jest mierzony w milisekundach. Test monitorowania kończy się niepowodzeniem, jeśli kod odpowiedzi HTTP jest większy lub równy 400 lub jeśli odpowiedź trwa dłużej niż 30 sekund. Punkt końcowy jest uznawany za dostępny, jeśli jego testy monitorowania kończą się powodzeniem ze wszystkich określonych lokalizacji.
Aby ją skonfigurować, zobacz Monitorowanie aplikacji w usłudze aplikacja systemu Azure.
Zobacz też Artykuł Keeping Azure Web Sites up plus Endpoint Monitoring (Utrzymywanie witryn internetowych platformy Azure i monitorowanie punktów końcowych) — w temacie Stefan Schackow for a video on endpoint monitoring (Monitorowanie punktów końcowych w witrynach internetowych platformy Azure i monitorowanie punktów końcowych).
Monitorowanie wydajności aplikacji przy użyciu rozszerzeń
Wydajność aplikacji można również monitorować przy użyciu rozszerzenia witryny.
Każda aplikacja usługi App Service udostępnia rozszerzalny punkt końcowy zarządzania, który umożliwia korzystanie z zaawansowanego zestawu narzędzi wdrożonych jako rozszerzenia witryny. Rozszerzenia obejmują:
- Edytory kodu źródłowego, takie jak Azure DevOps.
- Narzędzia do zarządzania połączonymi zasobami, takimi jak baza danych MySQL połączona z aplikacją.
aplikacja systemu Azure Insights to rozszerzenie lokacji monitorowania wydajności, które jest również dostępne. Aby użyć usługi Application Insights, należy ponownie skompilować kod za pomocą zestawu SDK. Można również zainstalować rozszerzenie, które zapewnia dostęp do dodatkowych danych. Zestaw SDK umożliwia pisanie kodu w celu bardziej szczegółowego monitorowania użycia i wydajności aplikacji. Aby uzyskać więcej informacji, zobacz Monitorowanie wydajności w aplikacjach internetowych.
2. Zbieranie danych
Usługa App Service udostępnia funkcje diagnostyczne służące do rejestrowania informacji zarówno z serwera internetowego, jak i aplikacji internetowej. Informacje są oddzielone diagnostyką serwera internetowego i diagnostyką aplikacji.
Włączanie diagnostyki serwera internetowego
Możesz włączyć lub wyłączyć następujące rodzaje dzienników:
- Szczegółowe rejestrowanie błędów — szczegółowe informacje o błędach kodów stanu HTTP, które wskazują błąd (kod stanu 400 lub nowszy). Może to zawierać informacje, które mogą pomóc w ustaleniu, dlaczego serwer zwrócił kod błędu.
- Śledzenie żądań niepomyślnych — szczegółowe informacje na temat żądań, w tym ślad składników usług IIS używanych do przetwarzania żądania i czasu potrzebnego w każdym składniku. Może to być przydatne, jeśli próbujesz poprawić wydajność aplikacji lub wyizolować przyczynę określonego błędu HTTP.
- Rejestrowanie serwera internetowego — informacje o transakcjach HTTP przy użyciu rozszerzonego formatu pliku dziennika W3C. Jest to przydatne podczas określania ogólnych metryk aplikacji, takich jak liczba obsługiwanych żądań lub liczba żądań z określonego adresu IP.
Włączanie diagnostyki aplikacji
Istnieje kilka opcji zbierania danych wydajności aplikacji z usługi App Service, profilowania aplikacji na żywo z programu Visual Studio lub modyfikowania kodu aplikacji w celu rejestrowania dodatkowych informacji i śladów. Możesz wybrać opcje na podstawie ilości dostępu do aplikacji i obserwowanych z poziomu narzędzi do monitorowania.
Korzystanie z profilera usługi Application Insights
Możesz włączyć profilera usługi Application Insights, aby rozpocząć przechwytywanie szczegółowych śladów wydajności. Możesz uzyskać dostęp do śladów przechwyconych do pięciu dni temu, gdy trzeba zbadać problemy, które wystąpiły w przeszłości. Możesz wybrać tę opcję, o ile masz dostęp do zasobu usługi Application Insights aplikacji w witrynie Azure Portal.
Usługa Application Insights Profiler udostępnia statystyki dotyczące czasu odpowiedzi dla każdego wywołania internetowego i śladów wskazujących, który wiersz kodu spowodował powolne odpowiedzi. Czasami aplikacja usługi App Service działa wolno, ponieważ określony kod nie jest napisany w wydajny sposób. Przykłady obejmują sekwencyjny kod, który można uruchomić równolegle i niepożądane rywalizacje o blokady bazy danych. Usunięcie tych wąskich gardeł w kodzie zwiększa wydajność aplikacji, ale trudno je wykryć bez konfigurowania skomplikowanych śladów i dzienników. Ślady zebrane przez profilera usługi Application Insights pomagają zidentyfikować wiersze kodu, które spowalniają aplikację i pokonują to wyzwanie dla aplikacji usługi App Service.
Aby uzyskać więcej informacji, zobacz Profilowanie aplikacji na żywo w usłudze aplikacja systemu Azure Przy użyciu usługi Application Insights.
Korzystanie z profilowania zdalnego
W usłudze aplikacja systemu Azure aplikacje internetowe, aplikacje interfejsu API, zaplecza mobilne i zadania WebJob mogą być profilowane zdalnie. Wybierz tę opcję, jeśli masz dostęp do zasobu aplikacji i wiesz, jak odtworzyć problem, lub jeśli znasz dokładny interwał czasu, który występuje problem z wydajnością.
Profilowanie zdalne jest przydatne, jeśli użycie procesora CPU procesu jest wysokie, a proces działa wolniej niż oczekiwano lub opóźnienie żądań HTTP jest wyższe niż zwykle, można zdalnie profilować proces i pobierać stosy wywołań próbkowania procesora CPU w celu przeanalizowania działania procesu i ścieżek gorących kodu.
Aby uzyskać więcej informacji, zobacz Obsługa profilowania zdalnego w usłudze aplikacja systemu Azure.
Ręczne konfigurowanie śladów diagnostycznych
Jeśli masz dostęp do kodu źródłowego aplikacji internetowej, diagnostyka aplikacji umożliwia przechwytywanie informacji generowanych przez aplikację internetową. ASP.NET aplikacje mogą używać System.Diagnostics.Trace
klasy do rejestrowania informacji w dzienniku diagnostycznym aplikacji. Należy jednak zmienić kod i ponownie wdrożyć aplikację. Ta metoda jest zalecana, jeśli aplikacja jest uruchomiona w środowisku testowym.
Aby uzyskać szczegółowe instrukcje dotyczące konfigurowania aplikacji na potrzeby rejestrowania, zobacz Włączanie rejestrowania diagnostycznego dla aplikacji w usłudze aplikacja systemu Azure Service.
Korzystanie z narzędzia diagnostycznego
Usługa App Service udostępnia inteligentne i interaktywne środowisko ułatwiające rozwiązywanie problemów z aplikacją bez konieczności konfigurowania. Gdy wystąpią problemy z aplikacją, narzędzie diagnostyczne wskaże, co jest złe, aby ułatwić i szybko rozwiązać problem.
Aby uzyskać dostęp do diagnostyki usługi App Service, przejdź do aplikacji usługi App Service lub środowiska App Service Environment w witrynie Azure Portal. W obszarze nawigacji po lewej stronie kliknij pozycję Diagnozuj i rozwiąż problemy.
Korzystanie z konsoli debugowania Kudu
Usługa App Service zawiera konsolę debugowania, której można użyć do debugowania, eksplorowania, przekazywania plików oraz punktów końcowych JSON w celu uzyskania informacji o środowisku. Ta konsola jest nazywana konsolą Kudu lub pulpitem nawigacyjnym SCM dla aplikacji.
Dostęp do tego pulpitu nawigacyjnego można uzyskać, przechodząc do linku https:// Nazwa aplikacji.scm.azurewebsites.net/>.<
Oto niektóre z rzeczy, które zapewnia Kudu:
- ustawienia środowiska dla aplikacji
- strumień dziennika
- zrzut diagnostyczny
- konsola debugowania, w której można uruchamiać polecenia cmdlet programu PowerShell i podstawowe polecenia DOS.
Inną przydatną funkcją kudu jest to, że w przypadku, gdy aplikacja zgłasza wyjątki pierwszej szansy, można użyć narzędzia Kudu i narzędzia SysInternals Procdump do utworzenia zrzutów pamięci. Te zrzuty pamięci to migawki procesu i często mogą pomóc w rozwiązywaniu bardziej skomplikowanych problemów z aplikacją.
Aby uzyskać więcej informacji na temat funkcji dostępnych w usłudze Kudu, zobacz Azure DevOps tools you should know about (Narzędzia usługi Azure DevOps, o których warto wiedzieć).
3. Eliminowanie problemu
Wykonaj skalowanie aplikacji
W usłudze aplikacja systemu Azure w celu zwiększenia wydajności i przepływności można dostosować skalę, w której działa aplikacja. Skalowanie aplikacji w górę obejmuje dwie powiązane akcje: zmianę planu usługi App Service na wyższą warstwę cenową i skonfigurowanie pewnych ustawień po przełączeniu się do wyższej warstwy cenowej.
Aby uzyskać więcej informacji na temat skalowania, zobacz Skalowanie aplikacji w usłudze aplikacja systemu Azure Service.
Ponadto możesz uruchomić aplikację w więcej niż jednym wystąpieniu. Skalowanie w górę nie tylko zapewnia większą możliwości przetwarzania, ale także zapewnia pewną odporność na uszkodzenia. Jeśli proces ulegnie awarii w jednym wystąpieniu, pozostałe wystąpienia będą nadal obsługiwać żądania.
Skalowanie można ustawić na Wartość Ręczna lub Automatyczna.
Użyj AutoHeal
Automatyczne odtwarzanie procesu roboczego dla aplikacji na podstawie wybranych ustawień (takich jak zmiany konfiguracji, żądania, limity oparte na pamięci lub czas potrzebny do wykonania żądania). W większości przypadków odtwarzanie procesu jest najszybszym sposobem na odzyskanie sprawności po problemie. Mimo że zawsze możesz ponownie uruchomić aplikację bezpośrednio w witrynie Azure Portal, autoheal wykonuje ją automatycznie. Wystarczy dodać niektóre wyzwalacze w katalogu głównym web.config aplikacji. Te ustawienia będą działać w taki sam sposób, nawet jeśli aplikacja nie jest aplikacją platformy .NET.
Aby uzyskać więcej informacji, zobacz Autonaprawiania witryn internetowych platformy Azure.
Ponownie uruchom aplikację
Ponowne uruchamianie jest często najprostszym sposobem odzyskiwania po jednorazowych problemach. W witrynie Azure Portal w bloku aplikacji dostępne są opcje zatrzymania lub ponownego uruchomienia aplikacji.
Aplikację można również zarządzać przy użyciu programu Azure PowerShell. Aby uzyskać więcej informacji, zobacz temat Using Azure PowerShell with Azure Resource Manager (Używanie programu Azure PowerShell z usługą Azure Resource Manager).