Kurz: Spuštění zátěžového testu za účelem identifikace kritických bodů výkonu ve webové aplikaci

V tomto kurzu se dozvíte, jak identifikovat kritické body výkonu ve webové aplikaci pomocí Azure Load Testing Preview. Vytvoříte zátěžový test pro ukázkovou aplikaci Node.js.

Ukázková aplikace se skládá z Node.js webového rozhraní API, které komunikuje s databází NoSQL. Nasadíte webové rozhraní API do Azure App Service webových aplikací a jako databázi použijete Azure Cosmos DB.

Přečtěte si další informace o klíčových konceptech pro zátěžové testování Azure.

V tomto kurzu se naučíte:

  • Nasaďte ukázkovou aplikaci.
  • Vytvořte a spusťte zátěžový test.
  • Identifikace kritických bodů výkonu v aplikaci
  • Odstraňte kritické body.
  • Znovu spusťte zátěžový test a zkontrolujte vylepšení výkonu.

Důležité

Azure Load Testing je aktuálně ve verzi Preview. Právní podmínky, které se vztahují na funkce Azure, které jsou ve verzi beta, ve verzi Preview nebo jinak ještě nejsou obecně dostupné, najdete v dodatečných podmínkách použití pro Microsoft Verze Azure Preview.

Požadavky

Nasazení ukázkové aplikace

Než budete moct načíst test ukázkové aplikace, musíte ji nasadit a spustit. K tomu použijte příkazy Azure CLI, příkazy Gitu a příkazy PowerShellu.

  1. Otevřete Windows PowerShell, přihlaste se k Azure a nastavte předplatné:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Naklonujte zdrojové úložiště ukázkové aplikace:

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

    Ukázková aplikace je Node.js aplikace, která se skládá z webové komponenty Azure App Service a databáze Azure Cosmos DB. Úložiště obsahuje skript PowerShellu, který nasadí ukázkovou aplikaci do vašeho předplatného Azure. Obsahuje také skript Apache JMeter, který použijete v pozdějších krocích.

  3. Přejděte do adresáře Node.js aplikace a nasaďte ukázkovou aplikaci pomocí tohoto skriptu PowerShellu:

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

    Tip

    PowerShell můžete nainstalovat na Linux/WSL nebo macOS.

    Po instalaci můžete předchozí příkaz spustit jako pwsh ./deploymentscript.ps1.

  4. Po zobrazení výzvy zadejte:

    • ID vašeho předplatného Azure
    • Jedinečný název webové aplikace.
    • Umístění. Ve výchozím nastavení je eastusumístění . Kódy oblastí můžete získat spuštěním příkazu Get-AzLocation .

    Důležité

    Jako název webové aplikace používejte jenom malá písmena a číslice. Nepoužívejte mezery ani speciální znaky.

  5. Po dokončení nasazení otevřete v okně prohlížeče spuštění ukázkové aplikace https://<yourappname>.azurewebsites.net .

  6. Pokud chcete zobrazit komponenty aplikace, přihlaste se k Azure Portal a přejděte do skupiny prostředků, kterou jste vytvořili.

    Snímek obrazovky se seznamem skupin prostředků Azure

Teď, když máte aplikaci nasazenou a spuštěnou, můžete pro ni spustit první zátěžový test.

Konfigurace a vytvoření zátěžového testu

V této části vytvoříte zátěžový test pomocí ukázkového testovacího skriptu Apache JMeter.

Zdrojové úložiště ukázkové aplikace obsahuje skript Apache JMeter s názvem SampleApp.jmx. Tento skript provádí tři volání rozhraní API webové aplikace při každé iteraci testu:

  • add: Provede operaci vložení dat ve službě Azure Cosmos DB pro počet návštěvníků ve webové aplikaci.
  • get: Provede operaci GET ze služby Azure Cosmos DB, která načte počet.
  • lasttimestamp: Aktualizace časové razítko od posledního uživatele, který na web přešel.

Poznámka

Ukázkový skript Apache JMeter vyžaduje dva moduly plug-in: Custom Thread Groups a Throughput Shaping Timer. Pokud chcete otevřít skript v místní instanci Apache JMeter, musíte nainstalovat oba moduly plug-in. Můžete k tomu použít Správce modulů plug-in Apache JMeter .

Vytvoření prostředku Azure Load Testing

Prostředek zátěžového testování je prostředek nejvyšší úrovně pro aktivity zátěžového testování. Tento prostředek poskytuje centralizované místo pro zobrazení a správu zátěžových testů, výsledků testů a souvisejících artefaktů.

Pokud již máte prostředek zátěžového testování, přeskočte tuto část a pokračujte vytvořením zátěžového testu.

Pokud ještě nemáte prostředek zátěžového testování, vytvořte si ho:

  1. Přihlaste se k Azure Portal pomocí přihlašovacích údajů pro vaše předplatné Azure.

  2. Vyberte tlačítko nabídky v levém horním rohu portálu a pak vyberte + Vytvořit prostředek.

    Snímek obrazovky znázorňující tlačítko pro vytvoření prostředku

  3. Pomocí panelu hledání vyhledejte Azure Load Testing.

  4. Vyberte Azure Load Testing.

  5. V podokně Azure Load Testing vyberte Vytvořit.

    Snímek obrazovky znázorňující podokno Azure Load Testing

  6. Zadejte následující informace ke konfiguraci nového prostředku Azure Load Testing:

    Pole Popis
    Předplatné Vyberte předplatné Azure, které chcete použít pro tento prostředek Azure Load Testing.
    Skupina prostředků Vyberte existující skupinu prostředků. Nebo vyberte Vytvořit novou a pak zadejte jedinečný název nové skupiny prostředků.
    Název Zadejte jedinečný název pro identifikaci prostředku Azure Load Testing.
    Název nemůže obsahovat speciální znaky, například \/""[]:|<>+=;,?*@&nebo prázdné znaky. Název nemůže začínat podtržítkem (_) a nemůže končit tečkou (.) nebo pomlčkou (-). Délka musí být 1 až 64 znaků.
    Umístění Vyberte geografické umístění pro hostování prostředku Azure Load Testing.
    Toto umístění také určuje, kde jsou hostovány testovací moduly a odkud pocházejí požadavky klientů JMeter.

    Poznámka

    Volitelně můžete nakonfigurovat další podrobnosti na kartě Značky . Značky jsou páry název/hodnota, které umožňují kategorizovat prostředky a zobrazit konsolidovanou fakturaci použitím stejné značky na více prostředků a skupin prostředků.

  7. Po dokončení konfigurace prostředku vyberte Zkontrolovat a vytvořit.

  8. Zkontrolujte všechna nastavení konfigurace a výběrem možnosti Vytvořit spusťte nasazení prostředku Azure Load Testing.

    Po dokončení procesu se zobrazí zpráva o úspěšném nasazení.

  9. Pokud chcete zobrazit nový prostředek, vyberte Přejít k prostředku.

    Snímek obrazovky znázorňující obrazovku dokončení nasazení

  10. Volitelně můžete spravovat přístup k prostředku Azure Load Testing.

    Azure Load Testing používá řízení přístupu na základě role (RBAC) ke správě oprávnění pro váš prostředek. Pokud se zobrazí tato zpráva, váš účet nemá potřebná oprávnění ke správě testů.

    Snímek obrazovky s chybovou zprávou v Azure Portal, že nemáte oprávnění používat prostředek Azure Load Testing

Vytvoření zátěžového testu

Postup vytvoření zátěžového testu v prostředku zátěžového testování pro ukázkovou aplikaci:

  1. Přejděte k prostředku Zátěžové testování a na panelu příkazů vyberte Vytvořit nový test .

    Snímek obrazovky s tlačítkem pro vytvoření nového testu

  2. Na kartě Základy zadejte název testu a informace o popisu testu . Volitelně můžete zaškrtnutím políčka Spustit test po vytvoření automaticky spustit zátěžový test po jeho vytvoření.

    Snímek obrazovky znázorňující kartu Základy pro vytvoření testu

  3. Na kartě Testovací plán vyberte testovací metodu skriptu JMeter a pak z naklonovaného adresáře ukázkové aplikace vyberte testovací skript SampleApp.jmx . Dále vyberte Nahrát , nahrajte soubor do Azure a nakonfigurujte zátěžový test.

    Snímek obrazovky znázorňující kartu Testovací plán a postup nahrání skriptu Apache JMeter

    Volitelně můžete vybrat a nahrát další konfigurační soubory Apache JMeter nebo jiné soubory, na které se odkazuje v souboru JMX. Pokud například testovací skript používá datové sady CSV, můžete nahrát odpovídající soubory.csv .

  4. Na kartě Parametry přidejte novou proměnnou prostředí. Jako název a <yourappname>.azurewebsites.net hodnotu zadejte webovou aplikaci. Zástupný text <yourappname> nahraďte názvem nově nasazené ukázkové aplikace. Nezahrnujte předponu https:// .

    Testovací skript Apache JMeter používá proměnnou prostředí k načtení adresy URL webové aplikace. Skript pak vyvolá tři rozhraní API ve webové aplikaci.

    Snímek obrazovky znázorňující kartu parametrů pro přidání proměnné prostředí

  5. Na kartě Načtení nakonfigurujte následující podrobnosti. Pro tento kurz můžete ponechat výchozí hodnotu.

    Nastavení Hodnota Popis
    Instance modulu 1 Počet paralelních testovacích modulů, které spouští skript Apache JMeter.

    Snímek obrazovky znázorňující kartu Načtení pro vytvoření testu

  6. Na kartě Monitorování zadejte komponenty aplikace, které chcete monitorovat pomocí metrik prostředků. Vyberte Přidat nebo upravit a spravujte seznam komponent aplikace.

    Snímek obrazovky znázorňující kartu Monitorování pro vytvoření testu

    Snímek obrazovky, který ukazuje, jak přidat prostředky Azure k monitorování během zátěžového testu

    Snímek obrazovky znázorňující kartu Monitorování se seznamem prostředků Azure, které se mají monitorovat

  7. Vyberte Zkontrolovat a vytvořit, zkontrolujte všechna nastavení a vyberte Vytvořit.

    Snímek obrazovky s kartou pro kontrolu a vytvoření testu

Poznámka

Konfiguraci testu můžete kdykoli aktualizovat, například nahrát jiný soubor JMX. V seznamu testů zvolte svůj test a pak vyberte Upravit.

Spusťte zátěžový test v Azure Portal

V této části použijete Azure Portal k ručnímu spuštění zátěžového testu, který jste vytvořili dříve. Pokud jste zaškrtnuli políčko Spustit test po vytvoření , test už bude spuštěný.

  1. Výběrem možnosti Testy zobrazte seznam testů a pak vyberte test, který jste vytvořili.

    Snímek obrazovky se seznamem testů

    Tip

    K omezení počtu testů můžete použít vyhledávací pole a filtr Časový rozsah .

  2. Na stránce s podrobnostmi o testu vyberte Spustit nebo Spustit test. Potom v podokně Potvrzení spuštění testu vyberte Spustit a spusťte zátěžový test.

    Snímek obrazovky znázorňující výběry pro spuštění testu

    Azure Load Testing začne monitorovat a zobrazovat metriky serveru aplikace na řídicím panelu.

    Během spuštění testu můžete zobrazit metriky streamování na straně klienta. Ve výchozím nastavení se výsledky aktualizují automaticky každých pět sekund.

    Snímek obrazovky s řídicím panelem s výsledky testů

    Grafy můžete přizpůsobit pomocí více filtrů nebo agregovat výsledky do různých percentilů.

    Tip

    Zátěžový test můžete v Azure Portal kdykoli zastavit výběrem možnosti Zastavit.

Než přejdete k další části, počkejte, až se zátěžový test úplně dokončí.

Určení kritických bodů z hlediska výkonu

V této části budete analyzovat výsledky zátěžového testu, abyste identifikovali kritické body výkonu v aplikaci. Prozkoumejte metriky na straně klienta i serveru a zjistěte původní příčinu problému.

  1. Nejprve se podívejte na metriky na straně klienta. Všimněte si, že 90. percentil pro metriku Doba odezvy pro add požadavky rozhraní API a get je vyšší než pro lasttimestamp rozhraní API.

    Snímek obrazovky znázorňující metriky na straně klienta

    Podobný vzor můžete vidět u chyb, kdy lasttimestamp rozhraní API obsahuje méně chyb než ostatní rozhraní API.

    Snímek obrazovky znázorňující graf chyb

    Výsledky add rozhraní API a get jsou podobné, zatímco lasttimestamp rozhraní API se chová odlišně. Příčinou může být databáze, protože rozhraní API a addget zahrnují přístup k databázi.

  2. Pokud chcete tento kritický bod prozkoumat podrobněji, posuňte se dolů do části Řídicí panel metrik na straně serveru .

    Metriky na straně serveru zobrazují podrobné informace o komponentách aplikací Azure: plán Azure App Service, Azure App Service webovou aplikaci a Službu Azure Cosmos DB.

    Snímek obrazovky znázorňující metriky plánu Azure App Service

    V metrikách pro plán Azure App Service vidíte, že metriky Procento procesoru a Procento paměti jsou v přijatelném rozsahu.

  3. Teď se podívejte na metriky na straně serveru služby Azure Cosmos DB.

    Snímek obrazovky znázorňující metriky služby Azure Cosmos DB

    Všimněte si, že metrika Normalizovaná spotřeba RU ukazuje, že databáze rychle běžela na 100% využití prostředků. Vysoké využití prostředků mohlo způsobit chyby omezování databáze. Může také dojít ke zvýšení doby odezvy webových add rozhraní API a get .

    Můžete také vidět, že metrika Zřízená propustnost pro instanci služby Azure Cosmos DB má maximální propustnost 400 RU. Zvýšení zřízené propustnosti databáze může vyřešit problém s výkonem.

Zvýšení propustnosti databáze

V této části přidělíte databázi více prostředků, abyste vyřešili kritický bod výkonu.

V případě služby Azure Cosmos DB zvyšte nastavení škálování RU databáze:

  1. Přejděte k prostředku Azure Cosmos DB, který jste zřídili v rámci nasazení ukázkové aplikace.

  2. Vyberte kartu Data Explorer.

    Snímek obrazovky s kartou Data Explorer

  3. Vyberte Nastavení škálování &a aktualizujte hodnotu propustnosti na 1200.

    Snímek obrazovky s aktualizovaným nastavením škálování služby Azure Cosmos DB

  4. Vyberte Uložit a potvrďte změny.

Ověření vylepšení výkonu

Teď, když jste zvýšili propustnost databáze, spusťte znovu zátěžový test a ověřte, že se zlepšily výsledky výkonu:

  1. Na řídicím panelu testovacího spuštění vyberte Spustit znovu a pak v podokně Znovu spustit test vyberte Spustit znovu.

    Snímek obrazovky znázorňující výběry pro spuštění zátěžového testu

    Zobrazí se nová položka testovacího spuštění se sloupcem stavu, který cyklicky prochází stavy Zřizování, Spouštění a Hotovo . Kdykoli vyberte testovací běh a sledujte průběh zátěžového testu.

  2. Po dokončení zátěžového testu zkontrolujte výsledky doby odezvy a výsledky chyb metrik na straně klienta.

  3. Zkontrolujte metriky na straně serveru pro službu Azure Cosmos DB a ujistěte se, že se výkon zlepšil.

    Snímek obrazovky znázorňující metriky na straně klienta služby Azure Cosmos DB po aktualizaci nastavení škálování

    Normalizovaná spotřeba RU služby Azure Cosmos DB je nyní pod 100 %.

Teď, když jste změnili nastavení škálování databáze, vidíte, že:

  • Doba odezvy add rozhraní API a get se zlepšila.
  • Normalizovaná spotřeba RU zůstává pod limitem.

V důsledku toho se zlepšil celkový výkon vaší aplikace.

Vyčištění prostředků

Důležité

Prostředek Azure Load Testing, který jste vytvořili, můžete znovu použít pro další kurzy a články s postupy pro Azure Load Testing.

Pokud žádný z prostředků, které jste vytvořili, neplánujete používat, odstraňte je, aby se vám neúčtovaly žádné další poplatky. Pokud jste nasadili ukázkovou aplikaci v jiné skupině prostředků, můžete zopakovat následující kroky.

Odstranění prostředků pomocí Azure Portal:

  1. V levém horním rohu vyberte tlačítko nabídky a pak vyberte Skupiny prostředků.

  2. V seznamu vyberte skupinu prostředků, kterou jste vytvořili.

  3. Vyberte Odstranit skupinu prostředků. Snímek obrazovky s výběry k odstranění skupiny prostředků na portálu Azure Portal.

  4. Zadejte název skupiny prostředků. Vyberte Odstranit.

Pokud chcete odstranit prostředky pomocí Azure CLI, zadejte následující příkaz:

az group delete --name <yourresourcegroup>

Nezapomeňte, že odstraněním skupiny prostředků odstraníte všechny prostředky v ní.

Další kroky

V dalším kurzu se dozvíte, jak nastavit pracovní postup automatizovaného testování regrese pomocí Služby Azure Pipelines nebo GitHub Actions.