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
- An Azure account with an active subscription. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
- A helyi számítógépen telepített Azure CLI .
- Az Azure CLI 2.2.0-s vagy újabb verziója. Futtassa
az --version
a számítógépre telepített verzió megkereséséhez. Ha telepítenie vagy frissítenie kell az Azure CLI-t, olvassa el az Azure CLI telepítésével kapcsolatos témakört. - Visual Studio Code. Ha nem rendelkezik vele, töltse le és telepítse.
- Git. Ha nem rendelkezik vele, töltse le és telepítse.
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.
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>
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.
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
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.
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:
Nyisson meg egy terminálablakot, és írja be a következő parancsot az Azure-előfizetésbe való bejelentkezéshez.
az login
Nyissa meg a mintaalkalmazás könyvtárát.
cd nodejs-appsvc-cosmosdb-bottleneck
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
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
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 űrlaponmyapp.azurewebsites.net
található. Ne adja meg azhttps://
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-tesztszkriptreSampleApp.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:
Az Azure Portalon nyissa meg az Azure-terheléstesztelési erőforrást.
A bal oldali panelen válassza a Tesztek lehetőséget a terheléses tesztek listájának megtekintéséhez
Jelölje be a terhelési teszt melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
Lépjen a Figyelés lapra, és válassza a Hozzáadás/Módosítás lehetőséget.
Jelölje be a korábban üzembe helyezett mintaalkalmazás jelölőnégyzeteit, majd válassza az Alkalmaz lehetőséget.
Tipp.
Az erőforráscsoport-szűrővel csak az Azure-erőforrások tekinthetők meg a mintaalkalmazás erőforráscsoportjában.
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:
Az Azure Portalon nyissa meg az Azure-terheléstesztelési erőforrást.
A bal oldali panelen válassza a Tesztek lehetőséget a terheléses tesztek listájának megtekintéséhez
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.
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.
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.
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.
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.
Először tekintse meg az ügyféloldali metrikákat. Megfigyelheti, hogy a válaszidő metrikájának 90. percentilise az
get
add
API-kéréseknél magasabb, mint azlasttimestamp
API esetében.Hasonló mintázatot láthat a Hibákhoz, ahol az
lasttimestamp
API kevesebb hibával rendelkezik, mint a többi API-val.Az és
get
azadd
API-k eredményei hasonlóak, míg azlasttimestamp
API másképp viselkedik. Ennek oka lehet az adatbázissal kapcsolatos, mert mind azadd
get
API-k adatbázis-hozzáféréssel járnak.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.
A Azure-alkalmazás szolgáltatáscsomag metrikáiban láthatja, hogy a processzor százalékos és memória százalékos metrikái elfogadható tartományon belül vannak.
Most tekintse meg az Azure Cosmos DB kiszolgálóoldali metrikáit.
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-kget
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:
Lépjen a mintaalkalmazás üzembe helyezésének részeként kiépített Azure Cosmos DB-erőforrásra.
Válassza az Adatkezelő lapot.
Válassza a Méretezés &Gépház lehetőséget, és frissítse az átviteli sebesség értékét 1200-ra.
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:
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.
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.
A terhelési teszt befejeződése után ellenőrizze a válaszidő eredményeit és az ügyféloldali metrikák hibaeredményeit .
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.
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álaszidejeget
. - 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:
Válassza a menügombot a bal felső sarokban, majd válassza az Erőforráscsoportok lehetőséget.
A listából válassza ki a létrehozott erőforráscsoportot.
Válassza az Erőforráscsoport törlése elemet.
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.
Kapcsolódó tartalom
- További részletek a sikertelen tesztek diagnosztizálásáról
- Kiszolgálóoldali metrikák monitorozása az alkalmazás teljesítménybeli szűk keresztmetszeteinek azonosításához
- A terhelési teszt sikertelenségére vonatkozó feltételek definiálása a tesztelési eredmények szolgáltatáskövetelményekkel való érvényesítéséhez
- További információ az Azure Load Testing fő fogalmairól.