Problemen oplossen met trage prestaties van apps in Azure App Service
Dit artikel helpt u bij het oplossen van trage app-prestatieproblemen in Azure-app Service.
Als u op elk gewenst moment in dit artikel meer hulp nodig hebt, kunt u contact opnemen met de Azure-experts op de MSDN Azure en de Stack Overflow-forums. U kunt ook een ondersteuning voor Azure incident indienen. Ga naar de azure-ondersteuningssite en klik op Ondersteuning krijgen.
Symptoom
Wanneer u door de app bladert, laden de pagina's langzaam en soms time-outs.
Oorzaak
Dit probleem wordt vaak veroorzaakt door problemen op toepassingsniveau, zoals:
- netwerkaanvragen duren lang
- toepassingscode of databasequery's die inefficiënt zijn
- toepassing gebruikt veel geheugen/CPU
- toepassing loopt vast vanwege een uitzondering
Stappen voor probleemoplossing
Problemen oplossen kan worden onderverdeeld in drie afzonderlijke taken, in opeenvolgende volgorde:
App Service biedt u verschillende opties bij elke stap.
1. Toepassingsgedrag observeren en bewaken
Servicestatus bijhouden
Microsoft Azure publiciseert telkens wanneer er sprake is van een onderbreking van de service of prestatievermindering. U kunt de status van de service bijhouden in Azure Portal. Zie Servicestatus bijhouden voor meer informatie.
Uw app bewaken
Met deze optie kunt u achterhalen of uw toepassing problemen ondervindt. Klik op de blade van uw app op de tegel Aanvragen en fouten . Op de blade Metrische gegevens ziet u alle metrische gegevens die u kunt toevoegen.
Sommige metrische gegevens die u mogelijk wilt controleren voor uw app, zijn
- Gemiddelde geheugenwerkset
- Responstijd
- CPU-tijd
- Geheugenwerkset
- Verzoeken
Zie voor meer informatie:
Status van webeindpunt bewaken
Als u uw app uitvoert in de prijscategorie Standard , kunt u met App Service twee eindpunten bewaken vanaf drie geografische locaties.
Eindpuntbewaking configureert webtests vanaf geografisch gedistribueerde locaties die de reactietijd en uptime van web-URL's testen. De test voert een HTTP GET-bewerking uit op de web-URL om de reactietijd en uptime van elke locatie te bepalen. Elke geconfigureerde locatie voert elke vijf minuten een test uit.
Uptime wordt bewaakt met behulp van HTTP-antwoordcodes en de reactietijd wordt gemeten in milliseconden. Een bewakingstest mislukt als de HTTP-antwoordcode groter is dan of gelijk is aan 400 of als het antwoord langer dan 30 seconden duurt. Een eindpunt wordt als beschikbaar beschouwd als de bewakingstests van alle opgegeven locaties slagen.
Zie Apps controleren in Azure-app Service om dit in te stellen.
Zie Ook Azure-websites up houden plus Eindpuntbewaking- met Stefan Schackow voor een video over eindpuntbewaking.
Bewaking van toepassingsprestaties met extensies
U kunt de prestaties van uw toepassing ook bewaken met behulp van een site-extensie.
Elke App Service-app biedt een uitbreidbaar beheereindpunt waarmee u een krachtige set hulpprogramma's kunt gebruiken die als site-extensies zijn geïmplementeerd. Extensies zijn onder andere:
- Broncode-editors zoals Azure DevOps.
- Beheerhulpprogramma's voor verbonden resources, zoals een MySQL-database die is verbonden met een app.
Azure-toepassing Insights is een site-extensie voor prestatiebewaking die ook beschikbaar is. Als u Application Insights wilt gebruiken, bouwt u uw code opnieuw op met een SDK. U kunt ook een extensie installeren die toegang biedt tot aanvullende gegevens. Met de SDK kunt u code schrijven om het gebruik en de prestaties van uw app in meer detail te bewaken. Zie Prestaties bewaken in webtoepassingen voor meer informatie.
2. Gegevens verzamelen
App Service biedt diagnostische functionaliteit voor logboekregistratiegegevens van zowel de webserver als de webtoepassing. De informatie wordt onderverdeeld in webserverdiagnose en toepassingsdiagnose.
Diagnostische gegevens van webserver inschakelen
U kunt de volgende soorten logboeken in- of uitschakelen:
- Gedetailleerde logboekregistratie van fouten: gedetailleerde foutinformatie voor HTTP-statuscodes die duiden op een fout (statuscode 400 of hoger). Dit kan informatie bevatten die kan helpen bepalen waarom de server de foutcode heeft geretourneerd.
- Tracering van mislukte aanvragen: gedetailleerde informatie over mislukte aanvragen, inclusief een tracering van de IIS-onderdelen die worden gebruikt voor het verwerken van de aanvraag en de tijd die in elk onderdeel is genomen. Dit kan handig zijn als u probeert de prestaties van apps te verbeteren of te isoleren wat een specifieke HTTP-fout veroorzaakt.
- Webserverlogboekregistratie : informatie over HTTP-transacties met behulp van de uitgebreide W3C-logboekbestandsindeling. Dit is handig bij het bepalen van algemene metrische app-gegevens, zoals het aantal aanvragen dat wordt verwerkt of hoeveel aanvragen afkomstig zijn van een specifiek IP-adres.
Toepassingsdiagnose inschakelen
Er zijn verschillende opties voor het verzamelen van toepassingsprestatiegegevens van App Service, het live profilen van uw toepassing vanuit Visual Studio of het wijzigen van uw toepassingscode om meer informatie en traceringen te registreren. U kunt de opties kiezen op basis van hoeveel toegang u hebt tot de toepassing en wat u hebt waargenomen vanuit de bewakingshulpprogramma's.
Application Insights Profiler gebruiken
U kunt Application Insights Profiler inschakelen om gedetailleerde prestatietraceringen vast te leggen. U hebt toegang tot traceringen die tot vijf dagen geleden zijn vastgelegd wanneer u problemen in het verleden moet onderzoeken. U kunt deze optie kiezen zolang u toegang hebt tot de Application Insights-resource van de app in Azure Portal.
Application Insights Profiler biedt statistieken over de reactietijd voor elke webaanroep en traceringen die aangeeft welke regel code de trage reacties heeft veroorzaakt. Soms is de App Service-app traag omdat bepaalde code niet op een performante manier wordt geschreven. Voorbeelden hiervan zijn sequentiële code die parallel en ongewenste databasevergrendelingsconflicten kan worden uitgevoerd. Het verwijderen van deze knelpunten in de code verhoogt de prestaties van de app, maar ze zijn moeilijk te detecteren zonder uitgebreide traceringen en logboeken in te stellen. De traceringen die door Application Insights Profiler worden verzameld, helpen bij het identificeren van de coderegels die de toepassing vertragen en deze uitdaging voor App Service-apps overwinnen.
Zie Live-apps profileren in Azure-app Service met Application Insights voor meer informatie.
Externe profilering gebruiken
In Azure-app Service kunnen web-apps, API-apps, mobiele back-ends en WebJobs extern worden geprofileerd. Kies deze optie als u toegang hebt tot de app-resource en u weet hoe u het probleem kunt reproduceren, of als u het exacte tijdsinterval weet dat het prestatieprobleem optreedt.
Externe profilering is handig als het CPU-gebruik van het proces hoog is en uw proces langzamer wordt uitgevoerd dan verwacht, of de latentie van HTTP-aanvragen hoger is dan normaal, kunt u uw proces extern profileren en de STACK's voor CPU-steekproeven ophalen om de procesactiviteit en dynamische codepaden te analyseren.
Zie ondersteuning voor externe profilering in Azure-app Service voor meer informatie.
Diagnostische traceringen handmatig instellen
Als u toegang hebt tot de broncode van de webtoepassing, kunt u met toepassingsdiagnose gegevens vastleggen die worden geproduceerd door een webtoepassing. ASP.NET toepassingen kunnen de System.Diagnostics.Trace
klasse gebruiken om gegevens in het diagnostische logboek van de toepassing te registreren. U moet echter de code wijzigen en uw toepassing opnieuw implementeren. Deze methode wordt aanbevolen als uw app wordt uitgevoerd in een testomgeving.
Zie Diagnostische logboekregistratie inschakelen voor apps in Azure-app Service voor gedetailleerde instructies voor het configureren van uw toepassing voor logboekregistratie.
Het diagnostische hulpprogramma gebruiken
App Service biedt een intelligente en interactieve ervaring om u te helpen bij het oplossen van problemen met uw app zonder configuratie vereist. Wanneer u problemen ondervindt met uw app, wijst het diagnostische hulpprogramma erop wat er verkeerd is om u naar de juiste informatie te leiden om het probleem gemakkelijker en sneller op te lossen.
Als u toegang wilt krijgen tot Diagnostische gegevens van App Service, gaat u naar uw App Service-app of App Service-omgeving in Azure Portal. Klik in het linkernavigatievenster op Problemen vaststellen en oplossen.
De Kudu-foutopsporingsconsole gebruiken
App Service wordt geleverd met een console voor foutopsporing die u kunt gebruiken voor foutopsporing, het verkennen, uploaden van bestanden en JSON-eindpunten voor het ophalen van informatie over uw omgeving. Deze console wordt de Kudu-console of het SCM-dashboard voor uw app genoemd.
U kunt dit dashboard openen door naar de koppeling te gaan https://< App-naam.scm.azurewebsites.net/>.
Enkele van de dingen die Kudu biedt, zijn:
- omgevingsinstellingen voor uw toepassing
- logboekstream
- diagnostische dump
- foutopsporingsconsole waarin u PowerShell-cmdlets en eenvoudige DOS-opdrachten kunt uitvoeren.
Een andere handige functie van Kudu is dat als uw toepassing uitzonderingen voor de eerste kans genereert, u Kudu en het hulpprogramma SysInternals Procdump kunt gebruiken om geheugendumps te maken. Deze geheugendumps zijn momentopnamen van het proces en kunnen u vaak helpen complexere problemen met uw app op te lossen.
Zie Azure DevOps-hulpprogramma's waarover u meer informatie moet weten voor meer informatie over functies die beschikbaar zijn in Kudu.
3. Los het probleem op
De app schalen
In Azure-app Service kunt u voor betere prestaties en doorvoer de schaal aanpassen waarop u uw toepassing uitvoert. Het omhoog schalen van een app omvat twee gerelateerde acties: het wijzigen van uw App Service-plan in een hogere prijscategorie en het configureren van bepaalde instellingen nadat u bent overgeschakeld naar de hogere prijscategorie.
Zie Een app schalen in Azure-app Service voor meer informatie over schalen.
Daarnaast kunt u ervoor kiezen om uw toepassing uit te voeren op meer dan één exemplaar. Door uit te schalen beschikt u niet alleen over meer verwerkingsmogelijkheden, maar krijgt u ook een aantal fouttoleranties. Als het proces op één exemplaar uitvalt, blijven de andere exemplaren aanvragen verwerken.
U kunt instellen dat de schaal handmatig of automatisch is.
AutoHeal gebruiken
AutoHeal recyclet het werkproces voor uw app op basis van de instellingen die u kiest (zoals configuratiewijzigingen, aanvragen, geheugenlimieten of de tijd die nodig is om een aanvraag uit te voeren). Recycle het proces meestal de snelste manier om te herstellen van een probleem. Hoewel u de app altijd rechtstreeks vanuit Azure Portal opnieuw kunt starten, wordt de app automatisch automatisch voor u uitgevoerd. U hoeft alleen maar enkele triggers toe te voegen in de hoofdweb.config voor uw app. Deze instellingen werken op dezelfde manier, zelfs als uw toepassing geen .NET-app is.
Zie Automatisch herstellen van Azure-websites voor meer informatie.
De app opnieuw starten
Opnieuw opstarten is vaak de eenvoudigste manier om eenmalige problemen te herstellen. Op de blade van uw app in Azure Portal hebt u de opties om uw app te stoppen of opnieuw op te starten.
U kunt uw app ook beheren met behulp van Azure PowerShell. Zie Azure PowerShell gebruiken met Azure Resource Manager voor meer informatie.
Meer resources
Zelfstudie: Een belastingstest uitvoeren om prestatieknelpunten in een web-app te identificeren