Veelgestelde vragen over toepassingsprestaties voor Web Apps in Azure
Opmerking
Sommige van de onderstaande richtlijnen werken mogelijk alleen in Windows of Linux App Services. Linux App Services wordt bijvoorbeeld standaard uitgevoerd in de 64-bits modus.
Dit artikel bevat antwoorden op veelgestelde vragen over prestatieproblemen met toepassingen voor de Web Apps functie van Azure App Service.
Als uw Azure-probleem niet wordt opgelost in dit artikel, gaat u naar de Azure-forums op MSDN en Stack Overflow. U kunt uw probleem posten in deze forums of posten op @AzureSupport op Twitter. U kunt ook een ondersteuning voor Azure-aanvraag indienen. Als u een ondersteuningsaanvraag wilt indienen, selecteert u ondersteuning krijgen op de pagina ondersteuning voor Azure.
Waarom wordt in mijn App Service-plan het CPU-/geheugengebruik weergegeven, zelfs wanneer alle Web Apps zijn gestopt?
Azure App Service vereist continue systeemprocessen die verschillende platformbewerkingen en -functies verwerken, zoals beveiligingsupdates, beschikbaarheid van de SCM-console, toepassingsbewaking, verificatie en vele andere essentiële functies van uw web-app.
Systeemprocessen worden uitgevoerd op App Service Plannen, zelfs als er geen Web Apps wordt uitgevoerd of als het App Service Plan geen Web Apps bevat.
De platformprocessen verbruiken een minimale hoeveelheid resources (zoals CPU, geheugen en schijfruimte) en hetzelfde moet worden meegenomen tijdens de configuratie van de capaciteitsplanning, bewaking en automatische schaalaanpassing van een App Service Plan.
Waarom is mijn app traag?
Meerdere factoren kunnen bijdragen aan trage app-prestaties. Zie Problemen met trage web-app-prestaties oplossen voor gedetailleerde stappen voor probleemoplossing.
Hoe kan ik een scenario met hoog CPU-verbruik oplossen?
In sommige scenario's met hoog CPU-verbruik heeft uw app mogelijk echt meer rekenresources nodig. In dat geval kunt u overwegen om naar een hogere servicelaag te schalen, zodat de toepassing alle benodigde resources krijgt. Andere keren kan een hoog CPU-verbruik worden veroorzaakt door een slechte lus of door een coderingspraktijk. Inzicht krijgen in wat een verhoogd CPU-verbruik veroorzaakt, is een tweedelig proces. Maak eerst een procesdump en analyseer vervolgens de procesdump. Zie Een dumpbestand vastleggen en analyseren voor een hoog CPU-verbruik voor Web Apps voor meer informatie.
Hoe kan ik problemen met een scenario met hoog geheugengebruik oplossen?
In sommige scenario's met hoog geheugengebruik heeft uw app mogelijk echt meer rekenresources nodig. In dat geval kunt u overwegen om naar een hogere servicelaag te schalen, zodat de toepassing alle benodigde resources krijgt. Andere keren kan een fout in de code een geheugenlek veroorzaken. Een coderingspraktijk kan ook het geheugenverbruik verhogen. Inzicht krijgen in wat een hoog geheugenverbruik veroorzaakt, is een tweedelig proces. Maak eerst een procesdump en analyseer vervolgens de procesdump. Crash Diagnoser uit de Azure Site Extension Gallery kan beide stappen efficiënt uitvoeren. Zie Een dumpbestand vastleggen en analyseren voor onregelmatig hoog geheugen voor Web Apps voor meer informatie.
Hoe kan ik App Service web-apps automatiseren met behulp van PowerShell?
U kunt PowerShell-cmdlets gebruiken om App Service web-apps te beheren en te onderhouden. In onze blogpost Web-apps automatiseren die worden gehost in Azure App Service met behulp van PowerShell, wordt beschreven hoe u Op Azure Resource Manager gebaseerde PowerShell-cmdlets gebruikt om algemene taken te automatiseren. Het blogbericht bevat ook voorbeeldcode voor verschillende beheertaken voor web-apps. Zie Az.Websites voor beschrijvingen en syntaxis voor alle cmdlets voor App Service web-apps.
Hoe kan ik de gebeurtenislogboeken van mijn web-app weergeven?
De gebeurtenislogboeken van uw web-app weergeven:
- Meld u aan bij uw Kudu-website (
https://*yourwebsitename*.scm.azurewebsites.net
). - Selecteer in het menu Debug Console>CMD.
- Selecteer de map LogFiles .
- Als u gebeurtenislogboeken wilt weergeven, selecteert u het potloodpictogram naast eventlog.xml.
- Voer de PowerShell-cmdlet
Save-AzureWebSiteLog -Name webappname
uit om de logboeken te downloaden.
Hoe kan ik een geheugendump in de gebruikersmodus van mijn web-app vastleggen?
Een geheugendump in de gebruikersmodus van uw web-app vastleggen:
- Meld u aan bij uw Kudu-website (
https://*yourwebsitename*.scm.azurewebsites.net
). - Selecteer het menu Process Explorer .
- Klik met de rechtermuisknop op het w3wp.exe-proces of uw webtaakproces.
- Selecteer Geheugendump>volledige dump downloaden.
Hoe kan ik informatie op procesniveau weergeven voor mijn web-app?
U hebt twee opties voor het weergeven van informatie op procesniveau voor uw web-app:
- In de Azure Portal:
- Open de Procesverkenner voor de web-app.
- Als u de details wilt bekijken, selecteert u het w3wp.exe proces.
- In de Kudu-console:
- Meld u aan bij uw Kudu-website (
https://*yourwebsitename*.scm.azurewebsites.net
). - Selecteer het menu Process Explorer .
- Selecteer Eigenschappen voor hetw3wp.exe proces.
- Meld u aan bij uw Kudu-website (
Wanneer ik naar mijn app blader, zie ik 'Fout 403- Deze web-app is gestopt'. Hoe kan ik dit oplossen?
Drie voorwaarden kunnen deze fout veroorzaken:
- De web-app heeft een factureringslimiet bereikt en uw site is uitgeschakeld.
- De web-app is gestopt in de portal.
- De web-app heeft een quotumlimiet voor resources bereikt die mogelijk van toepassing is op een serviceplan voor gratis of gedeelde schaal.
Als u wilt zien wat de fout veroorzaakt en om het probleem op te lossen, volgt u de stappen in Web Apps: 'Fout 403 - Deze web-app is gestopt'.
Waar vind ik meer informatie over quota en limieten voor verschillende App Service-abonnementen?
Zie App Service limieten voor meer informatie over quota en limieten.
Hoe kan ik de reactietijd voor de eerste aanvraag verminderen na inactieve tijd?
Web-apps worden standaard uitgeladen als ze gedurende een bepaalde periode inactief zijn. Op deze manier kan het systeem resources besparen. Het nadeel is dat het antwoord op de eerste aanvraag na het uitladen van de web-app langer is, zodat de web-app kan worden geladen en antwoorden kan worden verzonden. In Basic- en Standard-serviceabonnementen kunt u de instelling AlwaysOn inschakelen om de app altijd geladen te houden. Dit elimineert langere laadtijden nadat de app inactief is. Ga als volgende te werk om de instelling Altijd aan te wijzigen:
- Ga in de Azure Portal naar uw web-app.
- Configuratie selecteren
- Selecteer Algemene instellingen.
- Selecteer Bij AlwaysOn de optie Aan.
Hoe kan ik tracering van mislukte aanvragen inschakelen?
Voer de volgende stappen uit om tracering van mislukte aanvragen in te schakelen:
Ga in de Azure Portal naar uw web-app.
Selecteer Alle instellingen>Diagnostische logboeken.
Selecteer Aanvoor Tracering mislukte aanvragen.
Kies Opslaan.
Selecteer Extra op de blade web-app.
Selecteer Visual Studio Online.
Als de instelling niet Aan is, selecteert u Aan.
Selecteer Zoeken.
Selecteer Web.config.
Voeg in system.webServer de volgende configuratie toe (om een specifieke URL vast te leggen):
<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>
Als u problemen met trage prestaties wilt oplossen, voegt u deze configuratie toe (als de opnameaanvraag meer dan 30 seconden duurt):
<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>
Als u de mislukte aanvraagtraceringen wilt downloaden, gaat u in de portal naar uw website.
Selecteer Extra>Kudu>Go.
Selecteer in het menu Debug Console>CMD.
Selecteer de map LogFiles en selecteer vervolgens de map met een naam die begint met W3SVC.
Als u het XML-bestand wilt zien, selecteert u het potloodpictogram.
Ik zie het bericht 'Worker Process requested recycle due to 'Percent Memory' limit.' Hoe kan ik dit probleem oplossen?
De maximaal beschikbare hoeveelheid geheugen voor een 32-bits proces (zelfs op een 64-bits besturingssysteem) is 2 GB. Het werkproces is standaard ingesteld op 32-bits in App Service (voor compatibiliteit met verouderde webtoepassingen).
Overweeg om over te schakelen naar 64-bits processen, zodat u kunt profiteren van het extra geheugen dat beschikbaar is in uw webwerkrol. Met deze actie wordt een web-app opnieuw opgestart, dus plan dienovereenkomstig.
Houd er ook rekening mee dat een 64-bits omgeving een Basic- of Standard-serviceplan vereist. Gratis en gedeelde abonnementen worden altijd uitgevoerd in een 32-bits omgeving.
Zie Web-apps configureren in App Service voor meer informatie.
Waarom treedt er na 230 seconden een time-out op voor mijn aanvraag?
Azure Load Balancer heeft een standaardinstelling voor time-outs voor inactiviteit van vier minuten. Deze instelling is over het algemeen een redelijke reactietijdslimiet voor een webaanvraag. dus App Service retourneert een time-out naar de client als uw toepassing geen antwoord retourneert binnen ongeveer 240 seconden (230 seconden in de Windows-app, 240 seconden in de Linux-app). Als uw web-app verwerking op de achtergrond vereist, wordt u aangeraden Azure WebJobs te gebruiken. De Azure-web-app kan webtaken aanroepen en een melding ontvangen wanneer de verwerking op de achtergrond is voltooid. U kunt kiezen uit meerdere methoden voor het gebruik van webtaken, waaronder wachtrijen en triggers.
WebJobs is ontworpen voor verwerking op de achtergrond. U kunt zoveel achtergrondverwerking uitvoeren als u wilt in een webtaak. Zie Achtergrondtaken uitvoeren met webtaken voor meer informatie over webtaken.
ASP.NET Core toepassingen die in App Service worden gehost, reageren soms niet meer. Hoe kan ik dit probleem oplossen?
Een bekend probleem met een eerdere versie van Kestrel kan ertoe leiden dat een ASP.NET Core 1.0-app die wordt gehost in App Service af en toe niet meer reageert. Mogelijk ziet u ook dit bericht: 'Er is een fout opgetreden in de opgegeven CGI-toepassing en de server heeft het proces beëindigd.'
Dit probleem is opgelost in Kestrel versie 1.0.2. Deze versie is opgenomen in de update ASP.NET Core 1.0.3. U kunt dit probleem oplossen door ervoor te zorgen dat u de app-afhankelijkheden bijwerkt om Kestrel 1.0.2 te gebruiken. U kunt ook een van de twee tijdelijke oplossingen gebruiken die worden beschreven in het blogbericht ASP.NET Core problemen met trage prestaties van 1.0 in App Service web-apps.
Ik kan mijn logboekbestanden niet vinden in de bestandsstructuur van mijn web-app. Hoe kan ik ze vinden?
Als u de functie Lokale cache van App Service gebruikt, wordt de mapstructuur van de mappen LogFiles en Gegevens voor uw App Service exemplaar beïnvloed. Wanneer lokale cache wordt gebruikt, worden submappen gemaakt in de mappen LogFiles en Gegevens van de opslag. De submappen gebruiken het naamgevingspatroon 'unieke id' + tijdstempel. Elke submap komt overeen met een VM-exemplaar waarin de web-app wordt uitgevoerd of is uitgevoerd.
Als u wilt bepalen of u lokale cache gebruikt, controleert u het tabblad App Service Toepassingsinstellingen. Als lokale cache wordt gebruikt, wordt de app-instelling WEBSITE_LOCAL_CACHE_OPTION
ingesteld op Always
.
Als u geen lokale cache gebruikt en dit probleem ondervindt, dient u een ondersteuningsaanvraag in.
Ik zie het bericht 'Er is een poging gedaan om toegang te krijgen tot een socket op een manier die is verboden door de toegangsmachtigingen.' Hoe kan ik deze fout oplossen?
Deze fout treedt meestal op als de uitgaande TCP-verbindingen op het VM-exemplaar zijn uitgeput. In App Service worden limieten afgedwongen voor het maximum aantal uitgaande verbindingen dat voor elk VM-exemplaar kan worden gemaakt. Zie Numerieke limieten voor meerdere VM's voor meer informatie.
Deze fout kan ook optreden als u toegang probeert te krijgen tot een lokaal adres vanuit uw toepassing. Zie Aanvragen voor lokale adressen voor meer informatie.
Zie het blogbericht over uitgaande verbindingen met Azure-websites voor meer informatie over uitgaande verbindingen in uw web-app.
Hoe kan ik Visual Studio gebruiken om extern fouten op te sporen in mijn App Service web-app?
Zie Externe foutopsporing in uw App Service web-app voor een gedetailleerd overzicht van het opsporen van fouten in uw web-app met behulp van Visual Studio.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.