Řešení potíží s nízkým výkonem aplikací v Azure App Service

Tento článek vám pomůže vyřešit potíže s nízkým výkonem aplikací v Azure App Service.

Pokud budete kdykoli potřebovat další pomoc v tomto č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říznak

Když aplikaci procházíte, stránky se načítají pomalu a někdy také dochází k vypršení časového limitu.

Příčina

Příčinou tohoto problému jsou často problémy na úrovni aplikace, jako jsou:

  • síťové požadavky, které trvají dlouho
  • Kód aplikace nebo databázové dotazy jsou neefektivní
  • aplikace s vysokým využitím paměti nebo procesoru
  • chyba aplikace kvůli výjimce

Postup při řešení potíží

Řešení potíží je možné rozdělit do tří různých úloh v postupném pořadí:

  1. Sledování a monitorování chování aplikace
  2. Shromažďování dat
  3. Zmírnění problému

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 pubřejňuje pokaždé, když dojde k přerušení služby nebo snížení výkonu. Stav služby můžete sledovat na Azure Portal. Další informace najdete v tématu Sledování stavu služby.

Monitorování aplikace

Tato možnost umožňuje zjistit, jestli vaše aplikace nemá nějaké problémy. V okně aplikace klikněte na dlaždici Požadavky a chyby . V okně Metrika se zobrazí všechny metriky, které můžete přidat.

Mezi metriky, které můžete chtít pro svou aplikaci monitorovat, patří:

  • Průměrná pracovní sada paměti
  • Doba odezvy
  • Čas procesoru
  • Pracovní sada paměti
  • Žádosti

monitorování výkonu aplikace

Další informace naleznete v tématu:

Monitorování stavu webového koncového bodu

Pokud používáte aplikaci v cenové úrovni Standard, 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, aby určil 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 jeho monitorovací testy ze všech zadaných umístění proběhnou úspěšně.

Pokud ho chcete nastavit, přečtěte si téma Monitorování aplikací v Azure App Service.

Video o monitorování koncových bodů najdete také v tématu Udržování webů Azure v chodu a monitorování koncových bodů – pomocí Stefana Schackowa.

Monitorování výkonu aplikací pomocí rozšíření

Výkon aplikace můžete také monitorovat 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 připojených prostředků, jako je databáze MySQL připojená k aplikaci.

Aplikace Azure Insights je také dostupné rozšíření webu pro monitorování výkonu. Pokud chcete používat Application Insights, znovu sestavíte 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 podrobnější monitorování využití a výkonu aplikace. Další informace najdete v tématu Monitorování výkonu ve webových aplikacích.

2. Shromažďování dat

App Service poskytuje diagnostické funkce pro protokolování informací z webového serveru i webové aplikace. Informace jsou rozdě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é indikují selhání (stavový kód 400 nebo vyšší). 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žitý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í rozšířeného formátu souboru protokolu W3C. To je užitečné při určování celkových metrik aplikace, například počtu zpracovaný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í z App Service, živě profilovat aplikaci ze sady Visual Studio nebo upravit kód aplikace tak, aby protokolovat další informace a trasování. Možnosti můžete zvolit na základě toho, jaký máte přístup k aplikaci a co jste zaznamenali z monitorovacích nástrojů.

Použití Profileru Application Insights

Profiler Application Insights můžete povolit, aby začal zaznamenávat podrobná trasování výkonu. Pokud potřebujete prozkoumat problémy, ke které došlo v minulosti, potřebujete získat přístup k trasování zachyceným před pěti dny. Tuto možnost můžete zvolit, pokud máte přístup k prostředku Application Insights aplikace na Azure Portal.

Profiler Application Insights poskytuje statistiku doby odezvy pro každé webové volání a trasování, která označují, 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. Mezi příklady patří sekvenční kód, který je možné spustit paralelně a v případě nežádoucích kolizí uzamčení databáze. Odebrání těchto kritických bodů v kódu zvyšuje výkon aplikace, ale bez nastavení propracovaných trasování a protokolů je obtížné je rozpoznat. Trasování shromážděná profilerem Application Insights pomáhají identifikovat řádky kódu, které zpomalují aplikaci, a překonat tento problém pro App Service aplikace.

Další informace najdete v tématu Profilace živých aplikací v Azure App Service pomocí Application Insights.

Použití vzdálené profilace

V Azure App Service 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 v procesu vysoké a proces běží pomaleji, než se čekalo, nebo pokud je latence požadavků HTTP vyšší než obvykle. Můžete proces vzdáleně profilovat a získat zásobníky volání vzorkování procesoru pro analýzu aktivity procesu a horkých cest kódu.

Další informace najdete v tématu Podpora vzdálené profilace v Azure App Service.

Ruční nastavení trasování diagnostiky

Pokud máte přístup ke zdrojovému kódu webové aplikace, diagnostika aplikací umožňuje zachytit informace vytvořené webovou aplikací. ASP.NET aplikace můžou pomocí System.Diagnostics.Trace třídy protokolovat informace do protokolu diagnostiky aplikací. Musíte ale změnit kód a nasadit aplikaci znovu. Tato metoda se doporučuje, pokud vaše aplikace běží v testovacím prostředí.

Podrobné pokyny ke konfiguraci protokolování aplikace najdete v tématu Povolení protokolování diagnostiky pro aplikace v Azure App 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 aplikací, diagnostický nástroj vás upozorní na to, co je špatně, aby vás navrátil na správné informace, abyste mohli problém snadněji a rychleji vyřešit.

Pokud chcete získat přístup k diagnostice App Service, přejděte do aplikace App Service nebo App Service Environment v Azure Portal. V levém navigačním panelu klikněte na Diagnostika a řešení problémů.

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í a nahrávání souborů a také ke koncovým bodům JSON pro získání informací o vašem prostředí. Tato konzola se nazývá 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ázev> aplikace.scm.azurewebsites.net/.

Kudu poskytuje některé z těchto věcí:

  • nastavení prostředí pro vaši aplikaci
  • stream protokolu
  • výpis diagnostiky
  • konzola ladění, ve které můžete spouštět rutiny PowerShellu a základní příkazy SYSTÉMU DOS.

Další užitečnou funkcí Kudu je, že v případě, že vaše aplikace vyvolává první výjimky, můžete k vytvoření výpisů paměti použít Kudu a nástroj SysInternals Procdump. Tyto výpisy paměti jsou snímky procesu a často vám můžou pomoct s řešením složitějších problémů s vaší aplikací.

Další informace o funkcích dostupných v Kudu najdete v tématu Nástroje Azure DevOps, o kterých byste měli vědět.

3. Zmírnění problému

Škálování aplikace

V Azure App Service můžete pro zvýšení výkonu a propustnosti upravit škálování, ve kterém aplikaci spouštíte. Vertikální navýšení kapacity aplikace zahrnuje dvě související akce: změnu plánu 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 v Azure App Service.

Kromě toho se můžete rozhodnout spustit aplikaci na více než jedné instanci. Horizontální navýšení kapacity poskytuje nejen více možností zpracování, ale také určitou odolnost proti chybám. Pokud proces na jedné instanci přestane fungovat, ostatní instance budou dál obsluhovat požadavky.

Měřítko můžete nastavit na Ruční nebo Automatické.

Použití funkce AutoHeal

Funkce AutoHeal recykluje pracovní proces pro vaši aplikaci na základě nastavení, která zvolíte (například změny konfigurace, požadavky, limity založené na paměti nebo čas potřebný k provedení požadavku). Recyklace procesu je ve většině případů nejrychlejším způsobem, jak se z problému zotavit. I když můžete aplikaci kdykoli restartovat přímo v rámci Azure Portal, funkce AutoHeal to udělá automaticky za vás. Stačí přidat do kořenového web.config pro vaši aplikaci několik triggerů. Tato nastavení by fungovala stejným způsobem, i když vaše aplikace není aplikace .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 Azure Portal v okně aplikace máte možnost aplikaci zastavit nebo restartovat.

Restartováním aplikace vyřešíte problémy s výkonem.

Aplikaci můžete také spravovat pomocí Azure PowerShell. Další informace najdete v tématu Použití Azure PowerShellu s Azure Resource Managerem.

Další zdroje informací

Kurz: Spuštění zátěžového testu k identifikaci kritických bodů výkonu ve webové aplikaci