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:
Meld u aan bij Azure Portal en controleer of uw abonnement actief is.
Controleer uw Azure CLI-versie in een terminal- of opdrachtvenster door
az --version
uit te voeren. Bekijk de meest recente releaseopmerkingen voor de nieuwste versie.Als u de nieuwste versie niet hebt, werkt u uw installatie bij door de installatiehandleiding voor uw besturingssysteem of platform te volgen.
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.
Open Windows PowerShell, meld u aan bij Azure en stel het abonnement in:
az login az account set --subscription <your-Azure-Subscription-ID>
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.
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
Geef bij de prompt het volgende op:
- Uw Azure-abonnements-id.
- Een unieke naam voor uw web-app.
- Een locatie. Standaard is
eastus
de 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.
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:
Open een terminalvenster en voer de volgende opdracht in om u aan te melden bij uw Azure-abonnement.
az login
Ga naar de voorbeeldtoepassingsmap.
cd nodejs-appsvc-cosmosdb-bottleneck
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
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
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 formuliermyapp.azurewebsites.net
. Neem het deel van de URL niet ophttps://
.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 hetSampleApp.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:
Ga in Azure Portal naar uw Azure Load Testing-resource.
Selecteer in het linkerdeelvenster Tests om de lijst met belastingstests weer te geven
Schakel het selectievakje naast de belastingstest in en selecteer Vervolgens Bewerken.
Ga naar het tabblad Bewaking en selecteer Vervolgens Toevoegen/Wijzigen.
Schakel de selectievakjes in voor de voorbeeldtoepassing die u eerder hebt geïmplementeerd en selecteer vervolgens Toepassen.
Tip
U kunt het resourcegroepfilter gebruiken om alleen de Azure-resources in de resourcegroep van de voorbeeldtoepassing weer te geven.
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:
Ga in Azure Portal naar uw Azure Load Testing-resource.
Selecteer in het linkerdeelvenster Tests om de lijst met belastingstests weer te geven
Selecteer de belastingstest in de lijst om de testdetails en lijst met testuitvoeringen weer te geven.
Selecteer Uitvoeren en voer opnieuw uit om de belastingtest te starten.
U kunt desgewenst een beschrijving van de testuitvoering invoeren.
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.
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.
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.
Bekijk eerst de metrische gegevens aan de clientzijde. U ziet dat het 90e percentiel voor de metrische reactietijd voor de
add
API-aanvragenget
hoger is dan voor delasttimestamp
API.U ziet een vergelijkbaar patroon voor fouten, waarbij de
lasttimestamp
API minder fouten heeft dan de andere API's.De resultaten van de
add
enget
API's zijn vergelijkbaar, terwijl delasttimestamp
API zich anders gedraagt. De oorzaak kan databasegerelateerd zijn, omdat zowel deadd
get
API's als api's betrekking hebben op databasetoegang.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.
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.
Bekijk nu de metrische gegevens aan de serverzijde van Azure Cosmos DB.
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
enget
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:
Ga naar de Azure Cosmos DB-resource die u hebt ingericht als onderdeel van de implementatie van de voorbeeldtoepassing.
Selecteer het tabblad Data Explorer .
Selecteer Schaal en Instellingen en werk de doorvoerwaarde bij naar 1200.
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:
Selecteer Opnieuw uitvoeren op het testdashboard en selecteer Opnieuw uitvoeren in het testvenster Opnieuw uitvoeren.
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.
Nadat de belastingtest is voltooid, controleert u de resultaten van de reactietijd en de foutenresultaten van de metrische gegevens aan de clientzijde.
Controleer de metrische gegevens aan de serverzijde voor Azure Cosmos DB en zorg ervoor dat de prestaties zijn verbeterd.
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
enget
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:
Selecteer de menuknop in de linkerbovenhoek en selecteer vervolgens Resourcegroepen.
Selecteer de resourcegroep die u hebt gemaakt uit de lijst.
Selecteer Resourcegroep verwijderen.
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.
Gerelateerde inhoud
- Meer informatie over het diagnosticeren van mislukte tests
- Metrische gegevens aan de serverzijde bewaken om knelpunten in prestaties in uw toepassing te identificeren
- Testtestcriteria definiëren om testresultaten te valideren op uw servicevereisten
- Meer informatie over de belangrijkste concepten voor Azure Load Testing.