Zelfstudie: Een belastingstest uitvoeren om prestatieknelpunten in een web-app te identificeren

In deze zelfstudie leert u hoe u prestatieknelpunten in een webtoepassing kunt identificeren met behulp van Azure Load Testing Preview. U maakt een belastingstest voor een voorbeeld van Node.js toepassing.

De voorbeeldtoepassing bestaat uit een Node.js web-API, die communiceert met een NoSQL-database. U implementeert de web-API voor Azure App Service web-apps en gebruikt Cosmos DB als de database.

In deze zelfstudie leert u het volgende:

  • Implementeer de voorbeeld-app.
  • Maak een belastingstest en voer deze uit.
  • Prestatieknelpunten in de app identificeren.
  • Verwijder het knelpunt.
  • Voer de belastingstest opnieuw uit om de prestatieverbeteringen te controleren.

Belangrijk

Azure Load Testing is momenteel beschikbaar als preview-versie. Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.

Vereisten

  • Een Azure-account met een actief abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
  • Voor deze zelfstudie moet u de Azure CLI lokaal uitvoeren. Azure CLI versie 2.2.0 of hoger moet zijn geïnstalleerd. Voer az --version uit om de versie te bekijken. Zie De Azure CLI installeren als u de CLI wilt installeren of upgraden.
  • Download en installeer VS Code.
  • Git downloaden en installeren

De voorbeeld-app implementeren

Voordat u de voorbeeld-app kunt laden, moet u deze gaan gebruiken. Gebruik Azure CLI-opdrachten, Git-opdrachten en PowerShell-opdrachten om dat te realiseren.

  1. Open Windows PowerShell, meld u aan bij Azure en stel het abonnement in:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Kloon de bron-repo van de voorbeeldtoepassing.

     git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
    

    De voorbeeldtoepassing is een Node.js app die bestaat uit Azure App Service webonderdeel en een Cosmos DB database. De repo bevat een PowerShell-script waarmee de voorbeeld-app wordt geïmplementeerd in uw Azure-abonnement. Het bevat ook een Apache JMeter-script dat u in latere stappen gaat gebruiken.

  3. Ga naar de Node.js van de app en implementeer de voorbeeld-app met behulp van het PowerShell-script.

     cd nodejs-appsvc-cosmosdb-bottleneck
     .\deploymentscript.ps1
    

    Tip

    U kunt deze PowerShell Core linux/WSL of macOSinstalleren.

    Nadat u deze hebt geïnstalleerd, kunt u de vorige opdracht uitvoeren als pwsh ./deploymentscript.ps1 .

  4. Geef bij de prompt het volgende op:

    • Uw Azure-abonnements-id.
    • Een unieke naam voor uw web-app.
    • Een locatie. De locatie is standaard eastus . U kunt regiocodes verkrijgen door de opdracht Get-AzLocation uit te voeren.

    Belangrijk

    Gebruik voor de naam van uw web-app alleen kleine letters en cijfers. Geen spaties. Geen speciale tekens.

  5. Zodra de implementatie is uitgevoerd, gaat u naar de voorbeeldtoepassing die wordt uitgevoerd door https://<yourappname>.azurewebsites.net in een browservenster te openen.

  6. Als u de onderdelen van de toepassing wilt zien, meldt u zich aan bij de Azure Portal gaat u naar de resourcegroep die u hebt gemaakt.

    Schermopname van de lijst met Azure-resourcegroepen.

Nu u de toepassing hebt geïmplementeerd en uitgevoerd, gaat u aan de slag met het uitvoeren van uw eerste belastingstest.

De belastingstest configureren en maken

In deze sectie maakt u een belastingstest met behulp van een bestaand Apache JMeter-testscript.

Het Apache JMeter-script configureren

De bron-repo van de voorbeeldtoepassing bevat een Apache JMeter-script met de naam SampleApp.jmx . Met dit script worden drie API-aanroepen uitgevoerd voor elke test iteratie:

  • add - Voert een bewerking voor het invoegen van gegevens Cosmos DB voor het aantal bezoekers op de web-app.
  • get - Voert een GET-bewerking uit vanaf Cosmos DB om het aantal op te halen.
  • lasttimestamp - Werkt de tijdstempel bij sinds de laatste gebruiker naar de website is gegaan.

In deze sectie gaat u het Apache JMeter-script bijwerken met de URL van de voorbeeld-web-app die u in de vorige sectie hebt geïmplementeerd.

Voordat u begint, moet u ervoor zorgen dat de map van de gekloonde voorbeeld-app is geopend in VS Code.

  1. Open de map van de gekloonde voorbeeld-app in VS Code.

    cd nodejs-appsvc-cosmosdb-bottleneck
    code .
    
  2. Open SampleApp.jmx.

  3. Zoek naar <stringProp name="HTTPSampler.domain">.

    U ziet drie exemplaren van <stringProp name="HTTPSampler.domain"> in het bestand.

  4. Vervang de waarde door de URL van de zojuist geïmplementeerde voorbeeldtoepassing in alle drie de exemplaren.

    <stringProp name="HTTPSampler.domain">yourappname.azurewebsites.net</stringProp>
    

    Werk de waarde op alle drie de plaatsen bij. Neem het voorvoegsel https:// niet op.

  5. Sla uw wijzigingen op en sluit het bestand.

De Azure Load Testing-resource maken

De resource Belasting testen is een resource op het hoogste niveau voor uw belastingtestactiviteiten. Deze resource biedt een centrale plaats voor het weergeven en beheren van belastingstests, testresultaten en andere gerelateerde artefacten.

Als u al een resource voor het testen van belasting hebt, slaat u deze sectie over en gaat u verder met Een belastingstest maken.

Als u nog geen resource voor belastingstests hebt, maakt u er nu een:

  1. Meld u aan bij de Azure-portal met behulp van de referenties van uw Azure-abonnement.

  2. Selecteer de menuknop in de linkerbovenhoek van de portal en selecteer vervolgens + Een resource maken.

    Schermopname van + Een resource maken.

  3. Gebruik de zoekbalk om Azure Load Testing te vinden.

  4. Selecteer Azure Load Testing.

  5. Selecteer maken in het deelvenster Belastingstests van Azure.

    Schermopname van de pagina voor het maken van Azure Load Testing.

  6. Geef de volgende informatie op om uw nieuwe Azure Load Testing-resource te configureren.

    Veld Beschrijving
    Abonnement Selecteer het Azure-abonnement dat u wilt gebruiken voor deze Azure Load Testing-resource.
    Resourcegroep Selecteer een bestaande resourcegroep of selecteer Nieuwe maken en voer vervolgens een unieke naam in voor de nieuwe resourcegroep.
    Name Voer een unieke naam in om uw Azure Load Testing-resource te identificeren.
    De naam mag geen speciale tekens bevatten, zoals \ /""[]: |<>+=;,?*@& of witruimte. De naam mag niet beginnen met '_' of eindigen met '.' of '-'. De lengte moet tussen 1 en 64 tekens lang zijn.
    Locatie Selecteer een geografische locatie voor het hosten van uw Azure Load Testing-resource.

    Schermopname van de tabbladen Basis bij het maken van een Azure Load Testing-resource.

    Notitie

    U kunt desgewenst meer details configureren op het tabblad Tags. Tags zijn naam/waarde-paren waarmee u resources kunt categoriseren en geconsolideerde facturering kunt weergeven door dezelfde tag toe te passen op meerdere resources en resourcegroepen.

  7. Wanneer u klaar bent met het configureren van de resource, selecteert u Beoordelen en maken.

  8. Controleer alle configuratie-instellingen en selecteer Maken om de implementatie van de Azure Load Testing-resource te starten.

    Wanneer het proces is voltooid, wordt er een bericht weergegeven dat de implementatie is geslaagd.

  9. Als u de nieuwe resource wilt weergeven, selecteert u Ga naar resource.

    Schermopname van het voltooiingsscherm van de implementatie.

  10. Selecteer op de pagina Azure Load Testing-resource de optie Access Control (IAM) en selecteer vervolgens Roltoewijzing toevoegen.

    Voordat u belastingstests in de Azure Load Testing-resource kunt beheren, moet u de juiste toegangsrechten hebben.

    Schermopname die laat zien hoe u toegangsbeheer configureert.

    U moet de rol Load Test Contributor of Load Test Owner toewijzen aan uw Azure-account. Zie Azure-rollen toewijzen met behulp van de Azure Portal voor meer informatie over het toewijzen van Azure Portal.

    Schermopname van het scherm voor roltoewijzing.

    Belangrijk

    Als u Azure-rollen wilt toewijzen, moet u Microsoft.Authorization/roleAssignments/write machtigingen hebben, zoals Beheerder voor gebruikerstoegang of Eigenaar. Het kan enkele minuten duren voordat de roltoewijzingen actief zijn voor uw account. Vernieuw de webpagina voor de gebruikersinterface om de bijgewerkte machtigingen weer te geven.

In de volgende sectie maakt u een belastingstest in de resource Belastingstest voor de voorbeeld-app.

Een belastingstest maken

  1. Navigeer naar de resource voor de belastingtest en selecteer Nieuwe test maken in de opdrachtbalk.

    Schermopname van Nieuwe test maken.

  2. Voer op het tabblad Basisinformatie de gegevens Testnaam en Testbeschrijving in. U kunt eventueel het selectievakje Test uitvoeren na het maken in- of uit om de belastingstest automatisch te starten nadat deze is gemaakt.

    Schermopname van het tabblad Basis bij het maken van een nieuwe test.

  3. Selecteer op het tabblad Testplan de testmethode JMeter-script en selecteer vervolgens het testscript SampleApp.jmx uit de gekloonde map van de voorbeeldtoepassing. Selecteer vervolgens Upload om het bestand te uploaden naar Azure en de belastingstest te configureren.

    Schermopname van het tabblad Testplan en hoe u een Apache JMeter-script uploadt.

    U kunt eventueel aanvullende Apache JMeter-configuratiebestanden selecteren en uploaden.

  4. Configureer de volgende gegevens op het tabblad Laden. U kunt de standaardwaarden voor deze zelfstudie behouden:

    Instelling Waarde Beschrijving
    Engine-exemplaren 1 Het aantal parallelle testen engines dat het Apache JMeter-script uitvoert.

    Schermopname van het tabblad Laden bij het maken van een nieuwe test.

  5. Geef op het tabblad Bewaking de toepassingsonderdelen op die u wilt controleren op de metrische gegevens van de resource. Selecteer Toevoegen/wijzigen om de lijst met toepassingsonderdelen te beheren.

    Schermopname van het tabblad Bewaking bij het maken van een nieuwe test.

    Schermopname die laat zien hoe u Azure-resources toevoegt die tijdens de belastingstest moeten worden bewaakt.

    Schermopname van het tabblad Bewaking met de lijst met Azure-resources die moeten worden bewaakt.

  6. Selecteer Beoordelen en maken, controleer alle instellingen en selecteer Maken.

    Schermopname van het tabblad Beoordelen en maken bij het maken van een nieuwe test.

Voer de belastingstest uit in Azure Portal

In deze sectie gebruikt u de Azure Portal de belastingstest die u eerder hebt gemaakt handmatig te starten. Als u het selectievakje Test uitvoeren na het maken hebt ingeschakeld, wordt de test al uitgevoerd.

  1. Selecteer Tests om de lijst met tests te bekijken en selecteer vervolgens de test die u eerder hebt gemaakt.

    Schermopname van de lijst met tests.

    Tip

    U kunt het zoekvak en het tijdsbereikfilter gebruiken om het aantal tests te beperken.

  2. Selecteer op de pagina testruns de optie Test uitvoeren of Uitvoeren.

    Schermopname die laat zien hoe u een test kunt uitvoeren.

  3. Selecteer Uitvoeren op de overzichtspagina van de run om de belastingstest te starten. Vervolgens ziet u de lijst met test runs.

    Schermopname van de overzichtspagina van de run.

    Azure Load Testing begint met het bewaken en weergeven van de metrische gegevens van de toepassing op het dashboard.

    U kunt de metrische gegevens aan de clientzijde bekijken terwijl de test wordt uitgevoerd. Standaard worden de resultaten automatisch elke vijf seconden vernieuwd.

    Schermopname van het dashboard met testresultaten.

    U kunt meerdere filters toepassen of de resultaten samenvoegen op verschillende percentielen om de grafieken aan te passen.

    Tip

    U kunt een belastingstest op elk moment vanuit de Azure Portal stoppen door Stoppen te selecteren.

Wacht totdat de belastingstest volledig is uitgevoerd voordat u doorgaat met de volgende sectie.

Prestatieknelpunten identificeren

In deze sectie analyseert u de resultaten van de belastingstest om prestatieknelpunten in de toepassing te identificeren. Bekijk zowel de metrische gegevens aan de clientzijde als aan de serverzijde om de hoofdoorzaak van het probleem te bepalen.

  1. Bekijk eerst de metrische gegevens aan de clientzijde. U ziet dat het 90e percentiel voor de metrische gegevens voor reactietijd voor de API-aanvragen en hoger is dan voor de add get lasttimestamp API.

    Schermopname van de metrische gegevens aan de clientzijde.

    U ziet een vergelijkbaar patroon voor Fouten, waarbij de lasttimestamp API minder fouten heeft dan de andere API's.

    Schermopname van de foutengrafiek.

    De resultaten van de add get API's en zijn vergelijkbaar, terwijl de lasttimestamp API zich anders gedraagt. De oorzaak kan database-gerelateerd zijn, omdat zowel de add API's als get de API's betrekking hebben op databasetoegang.

  2. Als u dit probleem gedetailleerder wilt onderzoeken, schuift u omlaag naar de sectie Dashboard voor metrische gegevens aan de serverzijde.

    De metrische gegevens aan de serverzijde bevatten gedetailleerde informatie over de onderdelen van uw Azure-toepassing: Azure App Service Plan, Azure App Service Web App en Azure Cosmos DB.

    Schermopname met de metrische Azure App Service Plan.

    In de Azure App Service Metrische gegevens plannen ziet u dat de metrische gegevens cpu-percentage en geheugenpercentage binnen een acceptabel bereik liggen.

  3. Bekijk nu de metrische gegevens aan Cosmos DB serverzijde.

    Schermopname met Azure Cosmos DB metrische gegevens.

    U ziet dat de metrische waarde Genormaliseerd RU-verbruik laat zien dat de database snel werd uitgevoerd op 100% resourcegebruik. Het hoge resourcegebruik kan databasebeperkingsfouten hebben veroorzaakt en hogere reactietijden voor de add get web-API's en .

    U kunt ook zien dat de metriek Inrichtende doorvoer voor het Azure Cosmos DB een maximale doorvoer van 400 RUs heeft. Door de inrichtende doorvoer van de database te verhogen, kan het prestatieprobleem worden opgelost.

In de volgende sectie verhoogt u de in de database inrichtende doorvoer en controleert u of het knelpunt voor de prestaties van de toepassing is opgelost.

De databasedoorvoer verhogen

In deze sectie wijst u meer resources toe aan de database om het prestatieknelpunt op te lossen.

Voor Azure Cosmos DB verhoogt u de ru-schaalinstelling voor de database.

  1. Ga naar de Cosmos DB resource die u hebt ingericht als onderdeel van de implementatie van de voorbeeldtoepassing.

  2. Selecteer het Data Explorer tabblad.

    Schermopname van de Cosmos DB schaalinstellingen.

  3. Selecteer de optie & Instellingen en werk de doorvoerwaarde bij naar 1200.

    Schermopname met de bijgewerkte Cosmos DB schaalinstellingen.

  4. Selecteer Opslaan om de wijzigingen te bevestigen.

De prestatieverbeteringen valideren

Nu u de doorvoer van de database hebt verhoogd, gaat u de belastingstest opnieuw uitvoeren en controleren of de prestatieresultaten zijn verbeterd.

  1. Ga terug naar de detailpagina van de testuit run, selecteer Opnieuw uitvoeren en selecteer vervolgens Uitvoeren op de overzichtspagina van de run.

    Schermopname die laat zien hoe u de belastingstest kunt uitvoeren.

    U ziet een nieuwe vermelding voor de testuitvoer met de statuskolom die de status Inrichten, Uitvoerend en Klaar doorloop. Selecteer op elk moment het item voor de testrun om te controleren hoe de belastingstest wordt uitgevoerd.

  2. Nadat de belastingstest is uitgevoerd, controleert u de reactietijd en de fouten van de metrische gegevens aan de clientzijde.

  3. Controleer vervolgens de metrische gegevens aan de serverzijde Azure Cosmos DB controleren of de prestaties zijn verbeterd.

    Schermopname van de Cosmos DB metrische gegevens aan de clientzijde nadat de schaalinstellingen zijn bijgewerkt.

    U ziet dat het genormaliseerde RU Cosmos DB verbruik nu ruim lager is dan 100%.

Nadat u de schaalinstellingen van de database hebt aangepast, ziet u nu het volgende:

  • De reactietijd voor de add get API's en is verbeterd.
  • Het genormaliseerde RU-verbruik blijft ruim onder de maximumlimiet.

Als gevolg hiervan zijn de algehele prestaties van uw toepassing verbeterd.

Resources opschonen

Belangrijk

U kunt de resources die u hebt gemaakt, gebruiken als vereisten voor andere zelfstudies en artikelen met uitleg over Azure-belastingstests.

Als u niet van plan bent om een van de resources te gebruiken die u hebt gemaakt, verwijdert u deze zodat er geen verdere kosten in rekening worden gebracht.

  • In Azure Portal:

    1. Selecteer de menuknop in de linkerbovenhoek en selecteer vervolgens Resourcegroepen.

    2. Selecteer de resourcegroep die u hebt gemaakt uit de lijst.

    3. Selecteer Resourcegroep verwijderen.

      Schermopname van de selecties voor het verwijderen van een resourcegroep in de Azure-portal.

    4. Voer de naam van de resourcegroup in. Selecteer vervolgens Verwijderen.

  • U kunt ook de Azure CLI gebruiken.

    az group delete --name <yourresourcegroup>
    

    Als u de resourcegroep verwijdert, worden alle resources in de resourcegroep verwijderd.

Volgende stappen

Naar de volgende zelfstudie gaan voor meer informatie over het instellen van een werkstroom voor geautomatiseerde regressietests met behulp van Azure Pipelines of GitHub Actions.