Często zadawane pytania dotyczące wydajności aplikacji internetowych na platformie Azure
Uwaga 16.
Niektóre z poniższych wytycznych mogą działać tylko w usługach Windows lub Linux App Services. Na przykład usługi App Services systemu Linux działają domyślnie w trybie 64-bitowym.
Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące problemów z wydajnością aplikacji dla funkcji web apps usługi aplikacja systemu Azure Service.
Jeśli problem z platformą Azure nie został rozwiązany w tym artykule, odwiedź fora platformy Azure w witrynach MSDN i Stack Overflow. Możesz opublikować swój problem na tych forach lub opublikować go na @AzureSupport na Twitterze. Możesz również przesłać żądanie pomoc techniczna platformy Azure. Aby przesłać wniosek o pomoc techniczną, na stronie pomoc techniczna platformy Azure wybierz pozycję Uzyskaj pomoc techniczną.
Dlaczego mój plan usługi App Service wyświetla użycie procesora CPU/pamięci nawet wtedy, gdy wszystkie aplikacje internetowe są zatrzymane?
aplikacja systemu Azure Service wymaga ciągłych procesów systemowych, które obsługują kilka operacji i funkcji platformy, takich jak aktualizacje zabezpieczeń, dostępność konsoli programu SCM, monitorowanie aplikacji, uwierzytelnianie i wiele innych ważnych funkcji aplikacji internetowej.
Procesy systemowe będą uruchamiane w planach usługi App Service, nawet jeśli nie ma uruchomionych usługi Web Apps lub jeśli plan usługi App Service nie zawiera żadnych aplikacji internetowych.
Procesy platformy będą zużywać minimalną ilość zasobów (takich jak procesor CPU, pamięć i miejsce na dysku), a te same powinny być uwzględniane podczas planowania, monitorowania i automatycznego skalowania wyzwalacza planu usługi App Service.
Dlaczego moja aplikacja działa wolno?
Wiele czynników może przyczynić się do spowolnienia wydajności aplikacji. Aby uzyskać szczegółowe instrukcje rozwiązywania problemów, zobacz Rozwiązywanie problemów z niską wydajnością aplikacji internetowej.
Jak mogę rozwiązać problem z wysokim użyciem procesora CPU?
W niektórych scenariuszach wysokiego użycia procesora CPU aplikacja może naprawdę wymagać większej ilości zasobów obliczeniowych. W takim przypadku rozważ skalowanie do wyższej warstwy usługi, aby aplikacja pobierała wszystkie potrzebne zasoby. Innym razem wysokie użycie procesora CPU może być spowodowane złą pętlą lub praktyką kodowania. Uzyskiwanie wglądu w wyzwalanie zwiększonego użycia procesora CPU jest procesem dwuczęściowym. Najpierw utwórz zrzut procesu, a następnie przeanalizuj zrzut procesu. Aby uzyskać więcej informacji, zobacz Przechwytywanie i analizowanie pliku zrzutu pod kątem wysokiego użycia procesora CPU w usłudze Web Apps.
Jak mogę rozwiązać problem z wysokim użyciem pamięci?
W niektórych scenariuszach wysokiego zużycia pamięci aplikacja może naprawdę wymagać większej ilości zasobów obliczeniowych. W takim przypadku rozważ skalowanie do wyższej warstwy usługi, aby aplikacja pobierała wszystkie potrzebne zasoby. Innym razem usterka w kodzie może spowodować wyciek pamięci. Praktyka kodowania może również zwiększyć zużycie pamięci. Uzyskiwanie wglądu w to, co wyzwala wysokie zużycie pamięci, to dwuczęściowy proces. Najpierw utwórz zrzut procesu, a następnie przeanalizuj zrzut procesu. Narzędzie do diagnozowania awarii z galerii rozszerzeń witryn platformy Azure może wydajnie wykonać oba te kroki. Aby uzyskać więcej informacji, zobacz Przechwytywanie i analizowanie pliku zrzutu dla sporadycznej pamięci dla usługi Web Apps.
Jak mogę zautomatyzować aplikacje internetowe usługi App Service przy użyciu programu PowerShell?
Polecenia cmdlet programu PowerShell umożliwiają zarządzanie aplikacjami internetowymi usługi App Service i zarządzanie nimi. W naszym wpisie w blogu Automatyzowanie aplikacji internetowych hostowanych w usłudze aplikacja systemu Azure przy użyciu programu PowerShell opisano sposób używania poleceń cmdlet programu PowerShell opartych na usłudze Azure Resource Manager do automatyzowania typowych zadań. Wpis w blogu zawiera również przykładowy kod dla różnych zadań zarządzania aplikacjami internetowymi. Opisy i składnia wszystkich poleceń cmdlet aplikacji internetowych usługi App Service można znaleźć w temacie Az.Websites.
Jak mogę wyświetlić dzienniki zdarzeń mojej aplikacji internetowej?
Aby wyświetlić dzienniki zdarzeń aplikacji internetowej:
- Zaloguj się do witryny internetowej Kudu (
https://*yourwebsitename*.scm.azurewebsites.net
). - W menu wybierz pozycję CmD konsoli>debugowania.
- Wybierz folder LogFiles.
- Aby wyświetlić dzienniki zdarzeń, wybierz ikonę ołówka obok eventlog.xml.
- Aby pobrać dzienniki, uruchom polecenie cmdlet
Save-AzureWebSiteLog -Name webappname
programu PowerShell .
Jak mogę przechwycić zrzut pamięci w trybie użytkownika mojej aplikacji internetowej?
Aby przechwycić zrzut pamięci w trybie użytkownika aplikacji internetowej:
- Zaloguj się do witryny internetowej Kudu (
https://*yourwebsitename*.scm.azurewebsites.net
). - Wybierz menu Eksplorator procesów.
- Kliknij prawym przyciskiem myszy proces w3wp.exe lub proces zadania WebJob.
- Wybierz pozycję Pobierz zrzut pamięci Pełny zrzut>.
Jak mogę wyświetlić informacje na poziomie procesu dla mojej aplikacji internetowej?
Dostępne są dwie opcje wyświetlania informacji na poziomie procesu dla aplikacji internetowej:
- W witrynie Azure Portal:
- Otwórz Eksploratora procesów dla aplikacji internetowej.
- Aby wyświetlić szczegóły, wybierz proces w3wp.exe .
- W konsoli Kudu:
- Zaloguj się do witryny internetowej Kudu (
https://*yourwebsitename*.scm.azurewebsites.net
). - Wybierz menu Eksplorator procesów.
- W przypadku procesu w3wp.exe wybierz pozycję Właściwości.
- Zaloguj się do witryny internetowej Kudu (
Po przejściu do mojej aplikacji widzę komunikat "Błąd 403 — ta aplikacja internetowa została zatrzymana". Jak mogę rozwiązać ten problem?
Trzy warunki mogą powodować ten błąd:
- Aplikacja internetowa osiągnęła limit rozliczeń i witryna została wyłączona.
- Aplikacja internetowa została zatrzymana w portalu.
- Aplikacja internetowa osiągnęła limit przydziału zasobów, który może mieć zastosowanie do planu usługi skalowania bezpłatnego lub współużytkowanego.
Aby zobaczyć, co powoduje błąd i rozwiązać ten problem, wykonaj kroki opisane w artykule Web Apps: "Błąd 403 — ta aplikacja internetowa została zatrzymana".
Gdzie mogę dowiedzieć się więcej o limitach przydziału i limitach dla różnych planów usługi App Service?
Aby uzyskać informacje o limitach przydziału i limitach, zobacz Limity usługi App Service.
Jak mogę skrócić czas odpowiedzi pierwszego żądania po czasie bezczynności?
Domyślnie aplikacje internetowe są zwalniane, jeśli są bezczynne przez określony czas. Dzięki temu system może oszczędzać zasoby. Wadą jest to, że odpowiedź na pierwsze żądanie po usunięciu aplikacji internetowej jest dłuższa, aby umożliwić aplikacji internetowej ładowanie i uruchamianie obsługi odpowiedzi. W planach usługi Podstawowa i Standardowa można włączyć ustawienie Zawsze włączone , aby zachować zawsze załadowaną aplikację. Eliminuje to dłuższe czasy ładowania po bezczynności aplikacji. Aby zmienić ustawienie Zawsze włączone :
- W witrynie Azure Portal przejdź do aplikacji internetowej.
- Wybierz pozycję Konfiguracja
- Wybierz pozycję Ustawienia ogólne.
- W obszarze Zawsze włączone wybierz pozycję Włączone.
Jak mogę włączyć śledzenie żądań, które zakończyło się niepowodzeniem?
Aby włączyć śledzenie żądań, które zakończyło się niepowodzeniem, wykonaj następujące kroki:
W witrynie Azure Portal przejdź do aplikacji internetowej.
Wybierz pozycję Wszystkie ustawienia>Dzienniki diagnostyczne.
W obszarze Śledzenie żądań, które zakończyło się niepowodzeniem, wybierz pozycję Włączone.
Wybierz pozycję Zapisz.
W bloku aplikacji internetowej wybierz pozycję Narzędzia.
Wybierz pozycję Visual Studio Online.
Jeśli ustawienie nie jest włączone, wybierz pozycję Włączone.
Wybierz pozycję Idź.
Wybierz pozycję Web.config.
W pliku system.webServer dodaj następującą konfigurację (aby przechwycić określony adres URL):
<system.webServer> <tracing> <traceFailedRequests> <remove path="*api*" /> <add path="*api*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" /> </traceAreas> <failureDefinitions statusCodes="200-999" /> </add> </traceFailedRequests> </tracing>
Aby rozwiązać problemy z niską wydajnością, dodaj tę konfigurację (jeśli żądanie przechwytywania trwa dłużej niż 30 sekund):
<system.webServer> <tracing> <traceFailedRequests> <remove path="*" /> <add path="*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" /> </traceAreas> <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" /> </add> </traceFailedRequests> </tracing>
Aby pobrać ślady żądań, które zakończyły się niepowodzeniem, w portalu przejdź do witryny internetowej.
Wybierz pozycję Narzędzia>Kudu>Go.
W menu wybierz pozycję CmD konsoli>debugowania.
Wybierz folder LogFiles, a następnie wybierz folder o nazwie rozpoczynającej się od W3SVC.
Aby wyświetlić plik XML, wybierz ikonę ołówka.
Widzę komunikat "Proces roboczy zażądał recyklingu z powodu limitu "Procent pamięci". Jak mogę rozwiązać ten problem?
Maksymalna dostępna ilość pamięci dla 32-bitowego procesu (nawet w 64-bitowym systemie operacyjnym) wynosi 2 GB. Domyślnie proces roboczy jest ustawiony na 32-bitowy w usłudze App Service (w celu zapewnienia zgodności ze starszymi aplikacjami internetowymi).
Rozważ przełączenie do 64-bitowych procesów, aby móc korzystać z dodatkowej pamięci dostępnej w roli procesów roboczych sieci Web. Ta akcja wyzwala ponowne uruchomienie aplikacji internetowej, dlatego odpowiednio zaplanuj.
Należy również pamiętać, że środowisko 64-bitowe wymaga planu usługi Podstawowa lub Standardowa. Bezpłatne i udostępnione plany są zawsze uruchamiane w środowisku 32-bitowym.
Aby uzyskać więcej informacji, zobacz Konfigurowanie aplikacji internetowych w usłudze App Service.
Dlaczego moje żądanie przekracza limit czasu po 230 sekundach?
Usługa Azure Load Balancer ma domyślne ustawienie limitu czasu bezczynności na cztery minuty. To ustawienie jest zazwyczaj rozsądnym limitem czasu odpowiedzi dla żądania internetowego. usługa App Service zwraca limit czasu do klienta, jeśli aplikacja nie zwraca odpowiedzi w ciągu około 240 sekund (230 sekund w aplikacji systemu Windows, 240 sekund w aplikacji systemu Linux). Jeśli aplikacja internetowa wymaga przetwarzania w tle, zalecamy korzystanie z usługi Azure WebJobs. Aplikacja internetowa platformy Azure może wywoływać zadania WebJob i otrzymywać powiadomienia po zakończeniu przetwarzania w tle. Możesz wybrać jedną z wielu metod używania zadań WebJob, w tym kolejek i wyzwalaczy.
Zadania WebJob są przeznaczone do przetwarzania w tle. Przetwarzanie w tle można wykonać tak samo, jak w przypadku zadania WebJob. Aby uzyskać więcej informacji na temat zadań WebJob, zobacz Uruchamianie zadań w tle za pomocą zadań WebJob.
ASP.NET Aplikacje podstawowe hostowane w usłudze App Service czasami przestają odpowiadać. Jak mogę rozwiązać ten problem?
Znany problem z wcześniejszą wersją usługi Kestrel może spowodować sporadyczne zatrzymanie reagowania na aplikację ASP.NET Core 1.0 hostowaną w usłudze App Service. Może również zostać wyświetlony następujący komunikat: "Określona aplikacja CGI napotkała błąd i serwer zakończył proces".
Ten problem został rozwiązany w języku Kestrel w wersji 1.0.2. Ta wersja jest zawarta w aktualizacji ASP.NET Core 1.0.3. Aby rozwiązać ten problem, upewnij się, że zaktualizujesz zależności aplikacji, aby używać platformy Kestrel 1.0.2. Alternatywnie możesz użyć jednego z dwóch obejść opisanych we wpisie w blogu ASP.NET problemy z niską wydajnością platformy Core 1.0 w aplikacjach internetowych usługi App Service.
Nie mogę znaleźć plików dziennika w strukturze plików mojej aplikacji internetowej. Jak je znaleźć?
Jeśli używasz funkcji Lokalnej pamięci podręcznej usługi App Service, będzie miała wpływ na strukturę folderów LogFiles i Data dla wystąpienia usługi App Service. Gdy jest używana lokalna pamięć podręczna, podfoldery są tworzone w folderach LogFiles i Data magazynu. Podfoldery używają wzorca nazewnictwa "unikatowy identyfikator" i sygnatury czasowej. Każdy podfolder odpowiada wystąpieniu maszyny wirtualnej, w którym działa aplikacja internetowa lub została uruchomiona.
Aby określić, czy używasz lokalnej pamięci podręcznej, sprawdź kartę Ustawienia aplikacji usługi App Service. Jeśli używana jest lokalna pamięć podręczna, ustawienie WEBSITE_LOCAL_CACHE_OPTION
aplikacji ma wartość Always
.
Jeśli nie używasz lokalnej pamięci podręcznej i występuje ten problem, prześlij wniosek o pomoc techniczną.
Widzę komunikat "Podjęto próbę uzyskania dostępu do gniazda w sposób zabroniony przez jego uprawnienia dostępu". Jak mogę usunąć ten błąd?
Ten błąd zwykle występuje, jeśli wychodzące połączenia TCP w wystąpieniu maszyny wirtualnej są wyczerpane. W usłudze App Service limity są wymuszane dla maksymalnej liczby połączeń wychodzących, które można wykonać dla każdego wystąpienia maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Limity liczbowe między maszynami wirtualnymi.
Ten błąd może wystąpić również w przypadku próby uzyskania dostępu do adresu lokalnego z aplikacji. Aby uzyskać więcej informacji, zobacz Żądania adresów lokalnych.
Aby uzyskać więcej informacji na temat połączeń wychodzących w aplikacji internetowej, zobacz wpis w blogu dotyczący wychodzących połączeń z witrynami internetowymi platformy Azure.
Jak mogę używać programu Visual Studio do zdalnego debugowania mojej aplikacji internetowej usługi App Service?
Aby zapoznać się ze szczegółowym przewodnikiem, który pokazuje, jak debugować aplikację internetową przy użyciu programu Visual Studio, zobacz Zdalne debugowanie aplikacji internetowej usługi App Service.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.