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. U simuleert belasting voor een voorbeeld van een Node.js-webtoepassing en gebruikt vervolgens het dashboard voor belastingstests om metrische gegevens aan de clientzijde en serverzijde te analyseren.

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

In deze zelfstudie leert u het volgende:

  • Implementeer de voorbeeld-app.
  • Een belastingstest maken en uitvoeren.
  • Voeg Azure-app-onderdelen toe aan de belastingstest.
  • Identificeer prestatieknelpunten met behulp van het dashboard voor belastingstests.

Vereisten

  • Een Azure-account met een actief abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
  • Azure CLI, geïnstalleerd op uw lokale computer.
  • Azure CLI versie 2.2.0 of hoger. Voer az --version deze opdracht uit om de versie te vinden die op uw computer is geïnstalleerd. Als u de Azure CLI wilt installeren of upgraden, raadpleegt u De Azure CLI installeren.
  • Visual Studio Code. Als u deze niet hebt, downloadt en installeert u deze.
  • Git. Als u deze niet hebt, downloadt en installeert u deze.

Controle van vereisten

Voordat u begint, valideert u uw omgeving:

De voorbeeldtoepassing implementeren

In deze zelfstudie genereert u belasting voor een voorbeeldwebtoepassing die u implementeert in Azure-app Service. Gebruik Azure CLI-opdrachten, Git-opdrachten en PowerShell-opdrachten om de voorbeeldtoepassing in uw Azure-abonnement te implementeren.

  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 bronopslagplaats 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 een Azure-app Service-webonderdeel en een Azure Cosmos DB-database. De opslagplaats 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 map van de Node.js-app en implementeer de voorbeeld-app met behulp van dit PowerShell-script:

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

    Tip

    U kunt PowerShell installeren in Linux/WSL of macOS.

    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. Standaard is eastusde locatie . U kunt regiocodes ophalen door de opdracht Get-AzLocation uit te voeren.

    Belangrijk

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

  5. Nadat de implementatie is voltooid, gaat u naar de actieve voorbeeldtoepassing door deze te openen https://<yourappname>.azurewebsites.net in een browservenster.

Nu u de voorbeeldtoepassing hebt geïmplementeerd en uitgevoerd, kunt u een Azure Load Testing-resource en een belastingstest maken.

Een belastingstest maken

In deze zelfstudie maakt u een belastingstest met de Azure CLI door een JMeter-testscript (jmx bestand) te uploaden. De voorbeeldtoepassingsopslagplaats bevat al een configuratiebestand voor de belastingtest en het JMeter-testscript.

Als u een belastingstest wilt maken met behulp van Azure Portal, volgt u de stappen in quickstart: een belastingstest maken met een JMeter-script.

Volg deze stappen om een Azure Load Testing-resource en een belastingstest te maken met behulp van de Azure CLI:

  1. Open een terminalvenster en voer de volgende opdracht in om u aan te melden bij uw Azure-abonnement.

    az login
    
  2. Ga naar de voorbeeldtoepassingsmap.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. Maak een resourcegroep voor de Azure Load Testing-resource.

    U kunt eventueel ook de resourcegroep van de voorbeeldtoepassing die u eerder hebt geïmplementeerd, opnieuw gebruiken.

    Vervang de tijdelijke aanduiding voor tekst <load-testing-resource-group-name> door de naam van de resourcegroep.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. Maak een Azure Load Testing-resource met de az load create opdracht.

    Vervang de tijdelijke aanduiding voor tekst <load-testing-resource-name> door de naam van de resource voor belastingstests.

    # This script requires the following Azure CLI extensions:
    # - load
    
    loadTestResource="<load-testing-resource-name>"
    
    az load create --name $loadTestResource --resource-group $resourceGroup --location $location
    
  5. Maak een belastingstest voor het simuleren van de belasting voor uw voorbeeldtoepassing met de az load test create opdracht.

    Vervang de tijdelijke aanduiding voor de <web-app-hostname> tekst door de App Service-hostnaam van de voorbeeldtoepassing. Deze waarde is van het formulier myapp.azurewebsites.net. Neem het deel van de URL niet op https:// .

    testId="sample-app-test"
    webappHostname="<web-app-hostname>"
    
    az load test create --test-id $testId --load-test-resource $loadTestResource --resource-group $resourceGroup --load-test-config-file SampleApp.yaml --env webapp=$webappHostname
    

    Deze opdracht maakt gebruik van het configuratiebestand voor de Sampleapp.yaml belastingtest, dat verwijst naar het SampleApp.jmx JMeter-testscript. U gebruikt een opdrachtregelparameter om de hostnaam van de voorbeeldtoepassing door te geven aan de belastingstest.

U hebt nu een Azure-resource voor belastingstests en een belastingstest om belasting te genereren voor de voorbeeldwebtoepassing in uw Azure-abonnement.

Azure-app-onderdelen toevoegen om de toepassing te bewaken

Met Azure Load Testing kunt u metrische resourcegegevens bewaken voor de Azure-onderdelen van uw toepassing. Door deze metrische gegevens aan de serverzijde te analyseren, kunt u prestatie- en stabiliteitsproblemen in uw toepassing rechtstreeks vanuit het Dashboard Belasting testen van Azure identificeren.

In deze zelfstudie voegt u de Azure-onderdelen toe voor de voorbeeldtoepassing die u hebt geïmplementeerd in Azure, zoals de app-service, het Cosmos DB-account en meer.

De Azure-app-onderdelen voor de voorbeeldtoepassing toevoegen aan uw belastingstest:

  1. Ga in Azure Portal naar uw Azure Load Testing-resource.

  2. Selecteer in het linkerdeelvenster Tests om de lijst met belastingstests weer te geven

  3. Schakel het selectievakje naast de belastingstest in en selecteer Vervolgens Bewerken.

    Screenshot that shows the list of load tests in the Azure portal, highlighting how to select a test from the list and the Edit button to modify the load test configuration.

  4. Ga naar het tabblad Bewaking en selecteer Vervolgens Toevoegen/Wijzigen.

  5. Schakel de selectievakjes in voor de voorbeeldtoepassing die u eerder hebt geïmplementeerd en selecteer vervolgens Toepassen.

    Screenshot that shows how to add app components to a load test in the Azure portal.

    Tip

    U kunt het resourcegroepfilter gebruiken om alleen de Azure-resources in de resourcegroep van de voorbeeldtoepassing weer te geven.

  6. Selecteer Toepassen om de wijzigingen op te slaan in de configuratie van de belastingtest.

U hebt de Onderdelen van de Azure-app voor de voorbeeldtoepassing aan uw belastingstest toegevoegd om metrische gegevens aan de serverzijde in te schakelen terwijl de belastingstest wordt uitgevoerd.

De belastingstest uitvoeren

U kunt nu de belastingstest uitvoeren om de belasting te simuleren op basis van de voorbeeldtoepassing die u in uw Azure-abonnement hebt geïmplementeerd. In deze zelfstudie voert u de belastingstest uit vanuit Azure Portal. U kunt ook uw CI/CD-werkstroom configureren om uw belastingstest uit te voeren.

Uw belastingstest uitvoeren in Azure Portal:

  1. Ga in Azure Portal naar uw Azure Load Testing-resource.

  2. Selecteer in het linkerdeelvenster Tests om de lijst met belastingstests weer te geven

  3. Selecteer de belastingstest in de lijst om de testdetails en lijst met testuitvoeringen weer te geven.

  4. Selecteer Uitvoeren en voer opnieuw uit om de belastingtest te starten.

    U kunt desgewenst een beschrijving van de testuitvoering invoeren.

    Screenshot that shows how to start a load test in the Azure portal.

    Wanneer u een belastingtest uitvoert, implementeert Azure Load Testing het JMeter-testscript en eventuele extra bestanden naar de test-engineexemplaren en start u vervolgens de belastingstest.

  5. Wanneer de belastingtest wordt gestart, ziet u het dashboard voor de belastingtest.

    Als het dashboard niet wordt weergegeven, kunt u Vernieuwen selecteren en vervolgens de testuitvoering in de lijst selecteren.

    Het dashboard voor belastingstests bevat de details van de testuitvoering, zoals de metrische gegevens aan de clientzijde en metrische gegevens van de toepassing aan de serverzijde. De grafieken op het dashboard worden automatisch vernieuwd.

    Screenshot that shows the client-side metrics graphs in the load test dashboard in the Azure portal.

    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 gewenst moment stoppen vanuit Azure Portal door Stoppen te selecteren.

Wacht totdat de belastingstest volledig is voltooid voordat u verdergaat met de volgende sectie.

Metrische gegevens aan de serverzijde gebruiken om knelpunten in prestaties te 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 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 reactietijd voor de add API-aanvragen get hoger is dan voor de lasttimestamp API.

    Screenshot that shows the client-side metrics.

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

    Screenshot that shows the error chart.

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

  2. Als u dit knelpunt in meer detail wilt onderzoeken, schuift u omlaag naar de sectie Metrische gegevens aan de serverzijde.

    De metrische gegevens aan de serverzijde bevatten gedetailleerde informatie over uw Azure-toepassingsonderdelen: Azure-app Service-plan, Azure-app Service-web-app en Azure Cosmos DB.

    Screenshot that shows the Azure App Service plan metrics.

    In de metrische gegevens voor het Azure-app Service-plan kunt u zien dat de metrische gegevens voor CPU- en geheugenpercentages binnen een acceptabel bereik vallen.

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

    Screenshot that shows Azure Cosmos DB metrics.

    U ziet dat de metrische gegevens voor genormaliseerd RU-verbruik laten zien dat de database snel werd uitgevoerd met een resourcegebruik van 100%. Het hoge resourcegebruik kan leiden tot databasebeperkingsfouten. Het kan ook de reactietijden voor de add en get web-API's verhogen.

    U kunt ook zien dat de metrische gegevens voor ingerichte doorvoer voor het Azure Cosmos DB-exemplaar een maximale doorvoer van 400 RU's hebben. Het verhogen van de ingerichte doorvoer van de database kan het prestatieprobleem oplossen.

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 Azure Cosmos DB-resource die u hebt ingericht als onderdeel van de implementatie van de voorbeeldtoepassing.

  2. Selecteer het tabblad Data Explorer .

    Screenshot that shows Data Explorer tab.

  3. Selecteer Schaal en Instellingen en werk de doorvoerwaarde bij naar 1200.

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. Selecteer Opslaan om de wijzigingen te bevestigen.

De prestatieverbeteringen valideren

Nu u de doorvoer van de database hebt verhoogd, voert u de belastingstest opnieuw uit en controleert u of de prestatieresultaten zijn verbeterd:

  1. Selecteer Opnieuw uitvoeren op het testdashboard en selecteer Opnieuw uitvoeren in het testvenster Opnieuw uitvoeren.

    Screenshot that shows selections for running the load test.

    U ziet een nieuwe testuitvoeringsvermelding met een statuskolom die de status Inrichten, Uitvoeren en Gereed doorloopt. Selecteer op elk gewenst moment de testuitvoering om te controleren hoe de belastingstest vordert.

  2. Nadat de belastingtest is voltooid, controleert u de resultaten van de reactietijd en de foutenresultaten van de metrische gegevens aan de clientzijde.

  3. Controleer de metrische gegevens aan de serverzijde voor Azure Cosmos DB en zorg ervoor dat de prestaties zijn verbeterd.

    Screenshot that shows the Azure Cosmos DB client-side metrics after update of the scale settings.

    De genormaliseerde RU-verbruikswaarde van Azure Cosmos DB is nu ruim lager dan 100%.

Nu u de schaalinstellingen van de database hebt bijgewerkt, kunt u zien dat:

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

Hierdoor zijn de algehele prestaties van uw toepassing verbeterd.

Resources opschonen

Belangrijk

U kunt de Azure Load Testing-resource die u hebt gemaakt, opnieuw gebruiken voor andere zelfstudies en artikelen over het testen van azure-belasting.

Als u niet van plan bent om een van de resources te gebruiken die u hebt gemaakt, verwijdert u deze zodat er geen extra kosten in rekening worden gebracht. Als u de voorbeeldtoepassing in een andere resourcegroep hebt geïmplementeerd, kunt u de volgende stappen herhalen.

Resources verwijderen met behulp van 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. Screenshot of the selections to delete a resource group in the Azure portal.

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

Als u resources wilt verwijderen met behulp van de Azure CLI, voert u de volgende opdracht in:

az group delete --name <yourresourcegroup>

Vergeet niet dat als u de resourcegroep verwijdert, alle resources erin worden verwijderd.