Oktatóanyag: Terhelési teszt futtatása a webalkalmazások teljesítménybeli szűk keresztmetszeteinek azonosításához

Ebben az oktatóanyagban megtudhatja, hogyan azonosíthatja a webalkalmazások teljesítménybeli szűk keresztmetszeteit az Azure Load Testing használatával. A Node.js-mintaalkalmazás terhelését szimulálja, majd a terheléstesztelési irányítópult használatával elemezheti az ügyféloldali és a kiszolgálóoldali metrikákat.

A mintaalkalmazás egy Node.js webes API-ból áll, amely egy NoSQL-adatbázissal kommunikál. A webes API-t Azure-alkalmazás Service-webalkalmazásokban helyezi üzembe, és az Azure Cosmos DB-t használja adatbázisként.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Telepítse a mintaalkalmazást.
  • Terhelési teszt létrehozása és futtatása.
  • Azure-alkalmazásösszetevők hozzáadása a terhelési teszthez.
  • A terheléstesztelési irányítópult használatával azonosíthatja a teljesítmény szűk keresztmetszeteit.

Előfeltételek

Előfeltételek ellenőrzése

Mielőtt hozzákezd, ellenőrizze a környezetét:

  • Jelentkezzen be az Azure Portalra, és ellenőrizze, hogy az előfizetés aktív-e.

  • Futtassa az Azure CLI verzióját egy terminál vagy parancsablakban az --version. A legújabb verzióért tekintse meg a legújabb kibocsátási megjegyzéseket.

    Ha nem a legújabb verzióval rendelkezik, frissítse a telepítést az operációs rendszer vagy a platform telepítési útmutatójának követésével.

A mintaalkalmazás üzembe helyezése

Ebben az oktatóanyagban terhelést generál egy Azure-alkalmazás Szolgáltatásban üzembe helyezendő minta webalkalmazással szemben. Azure CLI-parancsokkal, Git-parancsokkal és PowerShell-parancsokkal telepítheti a mintaalkalmazást az Azure-előfizetésében.

  1. Nyissa meg a Windows PowerShellt, jelentkezzen be az Azure-ba, és állítsa be az előfizetést:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Klónozza a mintaalkalmazás forrás-adattárát:

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

    A mintaalkalmazás egy Node.js-alkalmazás, amely egy Azure-alkalmazás Service-webösszetevőből és egy Azure Cosmos DB-adatbázisból áll. Az adattár tartalmaz egy PowerShell-szkriptet, amely üzembe helyezi a mintaalkalmazást az Azure-előfizetésében. Egy Apache JMeter-szkripttel is rendelkezik, amelyet a későbbi lépésekben fog használni.

  3. Nyissa meg a Node.js-alkalmazás könyvtárát, és telepítse a mintaalkalmazást ezzel a PowerShell-szkripttel:

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

    Tipp.

    A PowerShellt Linux/WSL vagy macOS rendszeren is telepítheti.

    A telepítés után futtathatja az előző parancsot.pwsh ./deploymentscript.ps1

  4. A parancssorban adja meg a következőt:

    • Az Azure-előfizetés azonosítója.
    • A webalkalmazás egyedi neve.
    • Egy hely. Alapértelmezés szerint a hely a következő eastus: . A régiókódokat a Get-AzLocation parancs futtatásával szerezheti be.

    Fontos

    A webalkalmazás nevének csak kisbetűket és számokat kell használnia. Ne használjon szóközöket vagy speciális karaktereket.

  5. Az üzembe helyezés befejezése után nyissa meg a futó mintaalkalmazást https://<yourappname>.azurewebsites.net egy böngészőablakban.

Most, hogy üzembe helyezte és futtatta a mintaalkalmazást, létrehozhat egy Azure-beli terheléstesztelési erőforrást és egy terheléstesztet.

Terhelési teszt létrehozása

Ebben az oktatóanyagban egy terhelési tesztet hoz létre az Azure CLI-vel egy JMeter-tesztszkript (jmx fájl) feltöltésével. A mintaalkalmazás-adattár már tartalmaz egy terhelésteszt-konfigurációs fájlt és egy JMeter-tesztszkriptet.

Ha az Azure Portal használatával szeretne terheléstesztet létrehozni, kövesse a rövid útmutató lépéseit : terhelésteszt létrehozása JMeter-szkripttel.

Az Alábbi lépéseket követve azure-beli terheléstesztelési erőforrást és terheléstesztet hozhat létre az Azure CLI használatával:

  1. Nyisson meg egy terminálablakot, és írja be a következő parancsot az Azure-előfizetésbe való bejelentkezéshez.

    az login
    
  2. Nyissa meg a mintaalkalmazás könyvtárát.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. Hozzon létre egy erőforráscsoportot az Azure terheléstesztelési erőforrásához.

    Opcionálisan újra felhasználhatja a korábban üzembe helyezett mintaalkalmazás erőforráscsoportját is.

    Cserélje le a <load-testing-resource-group-name> szöveges helyőrzőt az erőforráscsoport nevére.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. Hozzon létre egy Azure-beli terheléstesztelési erőforrást a az load create paranccsal.

    Cserélje le a <load-testing-resource-name> szöveges helyőrzőt a terheléstesztelési erőforrás nevére.

    # 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. Hozzon létre egy terheléstesztet a mintaalkalmazás terhelésének szimulálására a az load test create paranccsal.

    Cserélje le a <web-app-hostname> szöveges helyőrzőt a mintaalkalmazás App Service-állomásnevére. Ez az érték az űrlapon myapp.azurewebsites.nettalálható. Ne adja meg az https:// URL-cím részét.

    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
    

    Ez a parancs a Sampleapp.yaml terhelésteszt konfigurációs fájlját használja, amely a JMeter-tesztszkriptre SampleApp.jmx hivatkozik. Parancssori paraméterrel adja át a mintaalkalmazás gazdagépnevét a terhelési tesztnek.

Most már rendelkezik egy Azure-terheléstesztelési erőforrással és egy terheléstesztel, amely betöltést hoz létre az Azure-előfizetésben lévő minta webalkalmazáson.

Azure-alkalmazásösszetevők hozzáadása az alkalmazás monitorozásához

Az Azure Load Testing lehetővé teszi az alkalmazás Azure-összetevőinek erőforrásmetrikáinak monitorozását. A kiszolgálóoldali metrikák elemzésével közvetlenül az Azure Load Testing irányítópultján azonosíthatja az alkalmazás teljesítmény- és stabilitási problémáit.

Ebben az oktatóanyagban hozzáadja az Azure-ban üzembe helyezett mintaalkalmazás Azure-összetevőit, például az app service-t, a Cosmos DB-fiókot stb.

A mintaalkalmazás Azure-alkalmazásösszetevőinek hozzáadása a terhelési teszthez:

  1. Az Azure Portalon nyissa meg az Azure-terheléstesztelési erőforrást.

  2. A bal oldali panelen válassza a Tesztek lehetőséget a terheléses tesztek listájának megtekintéséhez

  3. Jelölje be a terhelési teszt melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.

    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. Lépjen a Figyelés lapra, és válassza a Hozzáadás/Módosítás lehetőséget.

  5. Jelölje be a korábban üzembe helyezett mintaalkalmazás jelölőnégyzeteit, majd válassza az Alkalmaz lehetőséget.

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

    Tipp.

    Az erőforráscsoport-szűrővel csak az Azure-erőforrások tekinthetők meg a mintaalkalmazás erőforráscsoportjában.

  6. Válassza az Alkalmaz lehetőséget a terhelésteszt konfigurációjának módosításainak mentéséhez.

Sikeresen hozzáadta a mintaalkalmazás Azure-alkalmazásösszetevőit a terhelési teszthez, hogy lehetővé tegye a kiszolgálóoldali metrikák monitorozását a terhelésteszt futtatása közben.

A terhelési teszt futtatása

Most már futtathatja a terhelési tesztet az Azure-előfizetésben üzembe helyezett mintaalkalmazás terhelésének szimulálásához. Ebben az oktatóanyagban a terhelési tesztet az Azure Portalon futtatja. Másik lehetőségként konfigurálhatja a CI-/CD-munkafolyamatot a terhelési teszt futtatásához.

A terhelési teszt futtatása az Azure Portalon:

  1. Az Azure Portalon nyissa meg az Azure-terheléstesztelési erőforrást.

  2. A bal oldali panelen válassza a Tesztek lehetőséget a terheléses tesztek listájának megtekintéséhez

  3. Válassza ki a terheléses tesztet a listából a teszt részleteinek és a tesztfuttatások listájának megtekintéséhez.

  4. Válassza a Futtatás lehetőséget, majd futtassa újra a terhelési tesztet.

    Opcionálisan megadhatja a tesztfuttatás leírását.

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

    Terhelésteszt futtatásakor az Azure Load Testing üzembe helyezi a JMeter-tesztszkriptet és az esetleges további fájlokat a tesztmotor-példány(ok)on, majd elindítja a terhelési tesztet.

  5. A terhelésteszt indításakor látnia kell a terhelésteszt irányítópultját.

    Ha az irányítópult nem jelenik meg, válassza a Frissítés lehetőséget, majd válassza ki a tesztfuttatást a listából.

    A terhelésteszt-irányítópult bemutatja a tesztfuttatás részleteit, például az ügyféloldali metrikákat és a kiszolgálóoldali alkalmazásmetrikákat. Az irányítópult grafikonjai automatikusan frissülnek.

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

    A diagramok testreszabásához több szűrőt is alkalmazhat, vagy összesítheti az eredményeket különböző percentilisekre.

    Tipp.

    A terheléses teszteket bármikor leállíthatja az Azure Portalról a Stop (Leállítás) gombra kattintva.

Várjon, amíg a terhelési teszt teljesen befejeződik, mielőtt továbblép a következő szakaszra.

Kiszolgálóoldali metrikák használata a teljesítmény szűk keresztmetszeteinek azonosításához

Ebben a szakaszban a terhelési teszt eredményeit elemzi az alkalmazás teljesítménybeli szűk keresztmetszeteinek azonosításához. Vizsgálja meg mind az ügyféloldali, mind a kiszolgálóoldali metrikákat a probléma kiváltó okának meghatározásához.

  1. Először tekintse meg az ügyféloldali metrikákat. Megfigyelheti, hogy a válaszidő metrikájának 90. percentilise az getadd API-kéréseknél magasabb, mint az lasttimestamp API esetében.

    Screenshot that shows the client-side metrics.

    Hasonló mintázatot láthat a Hibákhoz, ahol az lasttimestamp API kevesebb hibával rendelkezik, mint a többi API-val.

    Screenshot that shows the error chart.

    Az és get az add API-k eredményei hasonlóak, míg az lasttimestamp API másképp viselkedik. Ennek oka lehet az adatbázissal kapcsolatos, mert mind az addget API-k adatbázis-hozzáféréssel járnak.

  2. A szűk keresztmetszet részletesebb vizsgálatához görgessen le a Kiszolgálóoldali metrikák irányítópult szakaszához.

    A kiszolgálóoldali metrikák részletes információkat mutatnak az Azure-alkalmazás összetevőiről: Azure-alkalmazás Szolgáltatáscsomag, Azure-alkalmazás Service-webalkalmazás és Azure Cosmos DB.

    Screenshot that shows the Azure App Service plan metrics.

    A Azure-alkalmazás szolgáltatáscsomag metrikáiban láthatja, hogy a processzor százalékos ésmemória százalékos metrikái elfogadható tartományon belül vannak.

  3. Most tekintse meg az Azure Cosmos DB kiszolgálóoldali metrikáit.

    Screenshot that shows Azure Cosmos DB metrics.

    Figyelje meg, hogy a Normalized RU Consumption metrika azt mutatja, hogy az adatbázis gyorsan futott 100%-os erőforrás-kihasználtsággal. A magas erőforrás-használat adatbázisszabályozási hibákat okozhat. Emellett növelheti a válaszidőt a add webes API-k get esetében is.

    Azt is láthatja, hogy az Azure Cosmos DB-példányhoz kiosztott átviteli sebesség metrika maximális átviteli sebessége 400 kérelemegység. Az adatbázis kiosztott átviteli sebességének növelése megoldhatja a teljesítményproblémát.

Az adatbázis átviteli sebességének növelése

Ebben a szakaszban további erőforrásokat foglal le az adatbázishoz a teljesítmény szűk keresztmetszetének megoldásához.

Az Azure Cosmos DB esetében növelje az adatbázis ru-méretezési beállítását:

  1. Lépjen a mintaalkalmazás üzembe helyezésének részeként kiépített Azure Cosmos DB-erőforrásra.

  2. Válassza az Adatkezelő lapot.

    Screenshot that shows Data Explorer tab.

  3. Válassza a Méretezés &Gépház lehetőséget, és frissítse az átviteli sebesség értékét 1200-ra.

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. A módosítások megerősítéséhez válassza a Mentés lehetőséget.

A teljesítménybeli fejlesztések ellenőrzése

Most, hogy növelte az adatbázis átviteli sebességét, futtassa újra a terhelési tesztet, és ellenőrizze, hogy javultak-e a teljesítményeredmények:

  1. A tesztfuttatási irányítópulton válassza az Újrafuttatás lehetőséget, majd az Újrafuttatás tesztpanelen válassza az Újrafuttatás lehetőséget.

    Screenshot that shows selections for running the load test.

    Megjelenik egy új tesztfuttatási bejegyzés egy állapotoszlopmal, amely a Kiépítés, a Végrehajtás és a Kész állapoton halad végig. Bármikor válassza ki a tesztfuttatást a terhelési teszt előrehaladásának figyeléséhez.

  2. A terhelési teszt befejeződése után ellenőrizze a válaszidő eredményeit és az ügyféloldali metrikák hibaeredményeit .

  3. Ellenőrizze az Azure Cosmos DB kiszolgálóoldali metrikáit, és győződjön meg arról, hogy javult a teljesítmény.

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

    Az Azure Cosmos DB normalizált ru-használati értéke már jóval 100% alatt van.

Most, hogy frissítette az adatbázis méretezési beállításait, a következő látható:

  • Javult az add api-k válaszideje get .
  • A normalizált RU-felhasználás a korlát alatt marad.

Ennek eredményeképpen az alkalmazás általános teljesítménye javult.

Clean up resources

Fontos

Újra felhasználhatja a többi Azure Load Testing-oktatóanyaghoz és útmutatócikkhez létrehozott Azure Load Testing-erőforrást.

Ha nem tervezi használni a létrehozott erőforrásokat, törölje őket, hogy ne járjon további költségekkel. Ha a mintaalkalmazást egy másik erőforráscsoportban helyezte üzembe, érdemes megismételni a következő lépéseket.

Erőforrások törlése az Azure Portal használatával:

  1. Válassza a menügombot a bal felső sarokban, majd válassza az Erőforráscsoportok lehetőséget.

  2. A listából válassza ki a létrehozott erőforráscsoportot.

  3. Válassza az Erőforráscsoport törlése elemet. Screenshot of the selections to delete a resource group in the Azure portal.

  4. Adja meg az erőforráscsoport nevét. Ezután válassza a Törlés elemet.

Ha az Azure CLI használatával szeretne erőforrásokat törölni, írja be a következő parancsot:

az group delete --name <yourresourcegroup>

Ne feledje, hogy az erőforráscsoport törlése törli a benne lévő összes erőforrást.