Megosztás a következőn keresztül:


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. Egy minta Node.js webalkalmazá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. Üzembe helyezheti a webes API-t az Azure App Service-webalkalmazásokban, és az Azure Cosmos DB-t használja adatbázisként.

Ebben az oktatóanyagban a következőket sajátíthatja el:

  • 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.

  • Az Azure CLI verziójának ellenőrzéséhez futtassa a az --version parancsot egy terminálban vagy parancsablakban. 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 egy Azure App Service-ben üzembe helyezhető minta webalkalmazással hoz létre terhelést. 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 App 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
    

    Jótanács

    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 Ön Azure előfizetési 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.

    Képernyőkép az Azure Portalon a terheléstesztek listájáról, kiemelve, hogyan választhat ki egy tesztet a listából, és a Szerkesztés gombot a terhelésteszt konfigurációjának módosításához.

  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.

    Képernyőkép arról, hogyan adhat hozzá alkalmazásösszetevőket egy terhelési teszthez az Azure Portalon.

    Jótanács

    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.

    Képernyőkép arról, hogyan indíthat terheléstesztet az Azure Portalon.

    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.

    Képernyőkép az ügyféloldali metrikák gráfjairól az Azure Portal terheléstesztelési irányítópultján.

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

    Jótanács

    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 addget API-kéréseknél magasabb, mint az lasttimestamp API esetében.

    Képernyőkép az ügyféloldali metrikákról.

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

    Képernyőkép a hibadiagramról.

    Az és add az get 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 tartalmaznak az Azure-alkalmazás összetevőiről: Azure App Service-csomag, Azure App Service-webalkalmazás és Azure Cosmos DB.

    Képernyőkép az Azure App Service-csomag metrikáiról.

    Az Azure App Service-csomag metrikáiban láthatja, hogy a processzor százalékos ésmemória százalékos aránya metrikái elfogadható tartományon belül vannak.

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

    Képernyőkép az Azure Cosmos DB metrikáiról.

    Figyelje meg, hogy a Normalized RU Consumption metrika azt mutatja, hogy az adatbázis gyorsan futott 100% erőforrás-kihasználtságnál. 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.

    Képernyőkép az Adatkezelő lapról.

  3. Válassza a Méretezés > beállítások lehetőséget, és frissítse az átviteli sebesség értékét 1200-ra.

    Képernyőkép az Azure Cosmos DB frissített méretezési beállításairól.

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

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.

    A terhelési teszt futtatására szolgáló kijelöléseket bemutató képernyőkép.

    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.

    Képernyőkép az Azure Cosmos DB ügyféloldali metrikáiról a méretezési beállítások frissítése után.

    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.

Erőforrások tisztítása

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 lehetőséget. Képernyőkép egy erőforráscsoport azure portalon való törlésére vonatkozó kijelölésekről.

  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.