Řešení potíží s výkonem pomalých aplikací ve službě Azure App Service
Tento článek vám pomůže vyřešit problémy s nízkým výkonem aplikace ve službě Aplikace Azure Service.
Pokud potřebujete další pomoc v libovolném bodě tohoto článku, můžete kontaktovat odborníky na Azure na fórech MSDN Azure a Stack Overflow. Případně můžete také podat podpora Azure incident. Přejděte na web podpory Azure a klikněte na Získat podporu.
Příznaky
Při procházení aplikace se stránky načítají pomalu a někdy vypršení časového limitu.
Příčina
Příčinou tohoto problému jsou často problémy na úrovni aplikace, například:
- síťových požadavků trvá delší dobu
- neefektivní kód aplikace nebo databázové dotazy
- aplikace využívající velké množství paměti/CPU,
- Aplikace se chybově ukončí kvůli výjimce
Postup při řešení potíží
Řešení potíží je možné rozdělit na tři různé úlohy v sekvenčním pořadí:
App Service nabízí různé možnosti v každém kroku.
1. Sledování a monitorování chování aplikace
Sledování Stav služby
Microsoft Azure se zveřejní pokaždé, když dojde k přerušení nebo snížení výkonu služby. Stav služby můžete sledovat na webu Azure Portal. Další informace najdete v tématu Sledování stavu služby.
Monitorování aplikace
Tato možnost umožňuje zjistit, jestli má vaše aplikace nějaké problémy. V okně aplikace klikněte na dlaždici Žádosti a chyby . V okně Metrika se zobrazí všechny metriky, které můžete přidat.
Některé metriky, které můžete chtít monitorovat pro vaši aplikaci, jsou
- Průměrná pracovní sada paměti
- Doba odezvy
- Čas procesoru
- Pracovní sada paměti
- Žádosti
Další informace naleznete v tématu:
Monitorování stavu webového koncového bodu
Pokud používáte aplikaci na cenové úrovni Standard , služba App Service umožňuje monitorovat dva koncové body ze tří geografických umístění.
Monitorování koncových bodů konfiguruje webové testy z geograficky distribuovaných umístění, která testují dobu odezvy a dobu provozu webových adres URL. Test provede operaci HTTP GET na webové adrese URL a určí dobu odezvy a dobu provozu z každého umístění. Každé nakonfigurované umístění spustí test každých pět minut.
Doba provozu se monitoruje pomocí kódů odpovědí HTTP a doba odezvy se měří v milisekundách. Test monitorování selže, pokud je kód odpovědi HTTP větší nebo roven 400 nebo pokud odpověď trvá déle než 30 sekund. Koncový bod se považuje za dostupný, pokud testy monitorování proběhnou úspěšně ze všech zadaných umístění.
Pokud ho chcete nastavit, přečtěte si téma Monitorování aplikací ve službě Aplikace Azure Service.
Podívejte se také na video o monitorování koncových bodů ve službě Stefan Schackow a udržování webů Azure v přehledu koncových bodů.
Monitorování výkonu aplikací pomocí rozšíření
Výkon aplikace můžete monitorovat také pomocí rozšíření webu.
Každá aplikace App Service poskytuje rozšiřitelný koncový bod správy, který umožňuje používat výkonnou sadu nástrojů nasazených jako rozšíření webu. Mezi rozšíření patří:
- Editory zdrojového kódu, jako je Azure DevOps.
- Nástroje pro správu pro připojené prostředky, jako je databáze MySQL připojená k aplikaci.
Aplikace Azure lication Insights je také dostupné rozšíření webu pro monitorování výkonu. Pokud chcete použít Application Insights, znovu sestavte kód pomocí sady SDK. Můžete také nainstalovat rozšíření, které poskytuje přístup k dalším datům. Sada SDK umožňuje psát kód pro monitorování využití a výkonu aplikace podrobněji. Další informace naleznete v tématu Monitorování výkonu webových aplikací.
2. Shromažďování dat
App Service poskytuje diagnostické funkce pro protokolování informací z webového serveru i webové aplikace. Informace jsou oddělené do diagnostiky webového serveru a diagnostiky aplikací.
Povolení diagnostiky webového serveru
Můžete povolit nebo zakázat následující typy protokolů:
- Podrobné protokolování chyb – podrobné informace o chybách pro stavové kódy HTTP, které označují selhání (stavový kód 400 nebo vyšší). To může obsahovat informace, které můžou pomoct určit, proč server vrátil kód chyby.
- Trasování neúspěšných požadavků – podrobné informace o neúspěšných požadavcích, včetně trasování komponent služby IIS používaných ke zpracování požadavku a času potřebného v jednotlivých komponentách. To může být užitečné, pokud se pokoušíte zlepšit výkon aplikace nebo izolovat, co způsobuje konkrétní chybu HTTP.
- Protokolování webového serveru – informace o transakcích HTTP pomocí formátu rozšířeného souboru protokolu W3C. To je užitečné při určování celkových metrik aplikace, například počtu zpracovávaných požadavků nebo počtu požadavků z konkrétní IP adresy.
Povolení diagnostiky aplikací
Existuje několik možností, jak shromažďovat data o výkonu aplikací ze služby App Service, profilovat aplikaci živě ze sady Visual Studio nebo upravit kód aplikace tak, aby protokolovat další informace a trasování. Můžete zvolit možnosti na základě toho, kolik přístupu k aplikaci máte a co jste zaznamenali z monitorovacích nástrojů.
Použití profileru Application Insights
Profiler Application Insights můžete povolit, abyste mohli začít zachytávat podrobné trasování výkonu. K trasováním zachyceným až před pěti dny můžete získat přístup, když potřebujete prozkoumat problémy, ke které došlo v minulosti. Tuto možnost můžete zvolit, pokud máte přístup k prostředku Application Insights aplikace na webu Azure Portal.
Application Insights Profiler poskytuje statistiky doby odezvy pro každé webové volání a trasování, které indikuje, který řádek kódu způsobil pomalé odpovědi. Někdy je aplikace App Service pomalá, protože určitý kód není napsaný výkonným způsobem. Příklady zahrnují sekvenční kód, který lze spustit paralelně a nežádoucí kolize zámků databáze. Odebrání těchto kritických bodů v kódu zvyšuje výkon aplikace, ale je obtížné je rozpoznat bez nastavení propracovaných trasování a protokolů. Trasování shromažďovaná profilerem Application Insights pomáhá identifikovat řádky kódu, které aplikaci zpomalí a překonají tuto výzvu pro aplikace App Service.
Další informace najdete v tématu Profilace živých aplikací ve službě Aplikace Azure pomocí Application Insights.
Použití vzdálené profilace
Ve službě Aplikace Azure je možné vzdáleně profilovat webové aplikace, aplikace API, mobilní back-endy a webové úlohy. Tuto možnost zvolte, pokud máte přístup k prostředku aplikace a víte, jak problém reprodukovat, nebo pokud znáte přesný časový interval, ve kterém k problému s výkonem dochází.
Vzdálená profilace je užitečná, pokud je využití procesoru procesu vysoké a váš proces běží pomaleji, než se čekalo, nebo latence požadavků HTTP je vyšší než normální, můžete vzdáleně profilovat proces a získat zásobníky volání vzorkování procesoru za účelem analýzy aktivity procesu a horkých cest kódu.
Další informace naleznete v tématu Podpora vzdálené profilace ve službě Aplikace Azure Service.
Ruční nastavení trasování diagnostiky
Pokud máte přístup ke zdrojovému kódu webové aplikace, diagnostika aplikací umožňuje zaznamenávat informace vytvořené webovou aplikací. ASP.NET aplikace mohou pomocí System.Diagnostics.Trace
třídy protokolovat informace do protokolu diagnostiky aplikací. Musíte ale změnit kód a znovu nasadit aplikaci. Tato metoda se doporučuje, pokud je vaše aplikace spuštěná v testovacím prostředí.
Podrobné pokyny ke konfiguraci aplikace pro protokolování najdete v tématu Povolení protokolování diagnostiky pro aplikace ve službě Aplikace Azure Service.
Použití diagnostického nástroje
App Service poskytuje inteligentní a interaktivní prostředí, které vám pomůže s řešením potíží s aplikací bez nutnosti konfigurace. Když narazíte na problémy s vaší aplikací, diagnostický nástroj vás upozorní na to, co je špatně, abyste mohli snadněji a rychleji problém vyřešit a vyřešit.
Pokud chcete získat přístup k diagnostice služby App Service, přejděte na webu Azure Portal do aplikace app Service nebo služby App Service Environment. V levém navigačním panelu klikněte na Diagnostikovat a řešit problémy.
Použití konzoly ladění Kudu
App Service se dodává s konzolou ladění, kterou můžete použít k ladění, zkoumání, nahrávání souborů a koncových bodů JSON pro získání informací o vašem prostředí. Tato konzola se označuje jako konzola Kudu nebo řídicí panel SCM pro vaši aplikaci.
K tomuto řídicímu panelu se dostanete tak, že přejdete na odkaz https://< Názvový název> aplikace.scm.azurewebsites.net/.
Mezi věci, které Kudu poskytuje, patří:
- nastavení prostředí pro vaši aplikaci
- stream protokolu
- výpis paměti diagnostiky
- konzola ladění, ve které můžete spouštět rutiny PowerShellu a základní příkazy DOS.
Další užitečnou funkcí Kudu je, že v případě, že vaše aplikace vyvolává výjimky s první šancí, můžete použít Kudu a nástroj SysInternals Procdump k vytvoření výpisů paměti. Tyto výpisy paměti jsou snímky procesu a často vám můžou pomoct při řešení složitějších problémů s aplikací.
Další informace o funkcích dostupných v Kudu najdete v nástrojích Azure DevOps, o kterých byste měli vědět.
3. Zmírnění problému
Škálujte aplikaci.
Ve službě Aplikace Azure můžete pro zvýšení výkonu a propustnosti upravit měřítko, ve kterém aplikaci spouštíte. Vertikální navýšení kapacity aplikace zahrnuje dvě související akce: změnu plánu služby App Service na vyšší cenovou úroveň a konfiguraci určitých nastavení po přechodu na vyšší cenovou úroveň.
Další informace o škálování najdete v tématu Škálování aplikace ve službě Aplikace Azure Service.
Kromě toho se můžete rozhodnout, že aplikaci spustíte na více instancích. Horizontální navýšení kapacity poskytuje nejen více možností zpracování, ale také poskytuje určitou odolnost proti chybám. Pokud proces přestane fungovat v jedné instanci, ostatní instance budou dál obsluhovat požadavky.
Měřítko můžete nastavit na ruční nebo automatické.
Použijte funkci AutoHeal.
Funkce AutoHeal recykluje pracovní proces pro vaši aplikaci na základě vámi zvoleného nastavení (například změny konfigurace, požadavky, limity založené na paměti nebo čas potřebný k provedení požadavku). Ve většině případů je recyklace tohoto procesu nejrychlejším způsobem, jak se zotavit z problému. I když aplikaci můžete kdykoli restartovat přímo na webu Azure Portal, autoHeal ji automaticky provede za vás. Stačí přidat některé triggery do kořenového web.config pro vaši aplikaci. Tato nastavení by fungovala stejným způsobem, i když vaše aplikace není aplikací .NET.
Další informace najdete v tématu Automatické opravy webů Azure.
Restartujte aplikaci.
Restartování je často nejjednodušší způsob, jak se zotavit z jednorázových problémů. Na webu Azure Portal v okně vaší aplikace máte možnosti, jak aplikaci zastavit nebo restartovat.
Aplikaci můžete také spravovat pomocí Azure PowerShellu. Další informace najdete v tématu Použití Azure PowerShellu s Azure Resource Managerem.
Další materiály
Kurz: Spuštění zátěžového testu pro identifikaci kritických bodů výkonu ve webové aplikaci