Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro toto doporučení kontrolního seznamu efektivity výkonu architektury Azure Well-Architected:
| PE:06 | Optimalizujte výkon úloh pravidelným testováním v produkčním prostředí, abyste zajistili, že vaše úloha dosáhne požadovaných výkonnostních cílů a dosáhne vašich obchodních cílů. |
|---|
Testování výkonu je nefunkční testovací postup používaný k vyhodnocení chování úlohy za různých podmínek. Pomáhá včas identifikovat snížení výkonu, aktivně řešit problémy a zajistit trvalé sladění se smlouvami o úrovni služeb.
Když měříte dobu odezvy, propustnost, využití prostředků a stabilitu, shromáždíte důkazy, že vaše úloha konzistentně splňuje definované cíle a poskytuje úroveň výkonu, kterou vaše firma vyžaduje.
Klíčové strategie v tomto článku vycházejí ze základních testovacích postupů popsaných ve strategiích architektury OE:09 pro testování. Doporučujeme nejprve zkontrolovat tento článek. Doporučení v této příručce jsou vymezená na výkon a zaměřují se na dosažení cílů výkonu, aby vaše úlohy zůstaly v souladu s vyvíjejícími se obchodními cíli.
Následující tabulka definuje klíčové termíny výkonu používané v tomto článku.
| Term | Definition |
|---|---|
| Cíle výkonu | Konkrétní hodnoty výkonu, které úloha musí splňovat, jako je doba odezvy, propustnost nebo počet souběžných uživatelů. |
| Prahové hodnoty výkonu | Hranice, které oddělují přijatelný výkon od nepřijatelného výkonu pro danou metriku. |
| Rozpočet na výkon | Část celkového cíle výkonu přidělená každé vrstvě nebo komponentě úlohy. |
| Rezerva pro chyby | Povolená úroveň chyb nebo selhání odvozená od SLOs. |
| Kritéria přijetí | Podmínky, které výsledek testu musí splňovat, aby úloha splňovala požadavky na výkon. |
| Experimentování řízené hypotézou | Testovací metoda, ve které uvedete predikci výkonu, otestujete ji podle směrného plánu a ověříte ji pomocí měřených výsledků. |
| Standardní hodnoty výkonu | Sada metrik, které představují chování úlohy za normálních podmínek, jak je ověřeno testováním. |
| Syntetické transakce | Skriptované požadavky, které simulují skutečné interakce uživatelů pro měření výkonu systému za kontrolovaných podmínek. |
| Regrese výkonu | Pokles výkonu ve srovnání se zavedenou základnou, způsobený změnou kódu, konfigurace nebo infrastruktury. |
| Odchylka výkonu | Postupný pokles výkonu v průběhu času, který se nezaznamená bez pravidelného testování u zavedených referenčních hodnot. |
Nastavení měřitelných cílů pro testy výkonnosti
Měřitelné výkonnostní cíle mění subjektivní očekávání na objektivní kritéria, která můžete testovat a ověřovat.
Definujte cíle výkonu a přiřaďte rozpočty. Definujte a zdokumentujte konkrétní výkonnostní cíle, například kolik souběžných uživatelů potřebujete podporovat. Ujistěte se, že tyto cíle odpovídají cílům úrovně služeb (SLO) a přeložte je do měřitelných testovacích cílů.
Přiřaďte rozpočty výkonu a chyb napříč různými vrstvami vaší úlohy. Když testy výkonnosti selžou, rozpočty vám pomůžou určit, která vrstva je zodpovědná a kde se zaměřit na optimalizaci. Bez rozpočtů selhání testů pouze ukazuje, že nejsou splněny cíle výkonu, nikoli kde je problém.
Můžete například nastavit rozpočty 400 ms pro dobu odezvy rozhraní API, 150 ms pro databázové dotazy a 1% limit pro neúspěšné požadavky. Když se test nezdaří, můžete zkontrolovat výsledky jednotlivých vrstev podle rozpočtu a zjistit, jestli se jedná o pomalé odpovědi rozhraní API, pomalé databázové dotazy nebo špičku v chybách.
Note
Vyhněte se definování cílů úrovně služeb, dokud nepochopíte toky uživatelů a požadavky na výkon. Cíle úrovně služeb by měly být založeny na skutečných potřebách uživatelů a obchodních cílech, nikoli na náhodných cílech.
Definujte kritéria přijetí s jasnými prahovými hodnotami pass a fail. Založte kritéria přijetí na základě metrik výkonu, jako je latence, doba odezvy, propustnost, využití prostředků, míra chyb a všechny další ukazatele výkonu, které odpovídají vašim výkonnostním cílům.
Definujte prahové hodnoty pro každou metriku, aby testy jasně určovaly, zda je výsledek úspěšný nebo neúspěšný. Pokud vaše SLO vyžaduje, aby 95 % požadavků bylo dokončeno do 200 ms, nastavte prahovou hodnotu doby odezvy rozhraní API na 200 ms v 95. percentilu. Všechny testovací běhy, ve kterých 95. percentil překročí 200 ms, jsou selhání.
Začněte brzy a testujte průběžně
Počáteční analýza výkonu zachytává kritické body architektury, než se stanou nákladným řešením.
V životním cyklu vývoje softwaru vaší úlohy co nejdříve spusťte testování výkonu. Abyste mohli začít, nepotřebujete úplnou aplikaci. Vývojáři mohou profilovat kód místně, měřit dobu odezvy a identifikovat operace náročné na prostředky. Včasné testování informuje rozhodnutí o návrhu, ověřuje volby architektury proti výkonnostním cílům a identifikuje příležitosti optimalizace.
Průběžně testujte úlohu, jak se vyvíjí, aby splňovala nové požadavky. Každá změna kódu může zavádět regrese výkonu. Pravidelně spouštět testy, abyste tyto změny zachytili včas. Začleňte testy výkonu do kanálů nasazení a spusťte pravidelné automatizované testy, abyste zjistili odchylku výkonu před dosažením produkčního prostředí.
Kompromis. Včasné testování výkonu vyžaduje vyhrazenou infrastrukturu a specializované odborné znalosti, což zvyšuje provozní náklady. Vyvažte tuto investici proti nákladům na problémy s výkonem, které jsou zjištěny pozdě v produkci, a výrobním incidentům.
Testování za reálných podmínek
Testy výkonnosti by měly odpovídat reálným podmínkám, aby výsledky byly smysluplné.
Zrcadlete své produkční prostředí
Testovací prostředí by mělo zrcadlit produkční prostředí co nejblíže. Přizpůsobte si přístup pro prostředí na základě rizikového profilu vaší úlohy.
Pro klíčové úlohy je nutné přesně sladit s produkčním prostředím:
- Výpočetní skladové položky a konfigurace
- Nastavení automatického škálování
- Konfigurace ukládání do mezipaměti
- Síťové podmínky (latence, šířka pásma)
- Externí závislosti
V případě nekritických úloh může testování ve škálovaném prostředí, které napodobuje produkční prostředí, poskytovat užitečné přehledy s nižšími náklady.
Předcházet odchylce konfigurace Posun konfigurace může vést k zavádějícím výsledkům testů. Implementujte automatizované kontroly a ověřte, že testovací prostředí odpovídá produkčnímu prostředí. Před spuštěním testů se ujistěte, že jsou nasazeny správné verze.
Kompromis. Úplná produkční replikace pro testování výkonu výrazně zvyšuje náklady na infrastrukturu. Vyhodnoťte, jestli riziko problémů s výkonem v produkčním prostředí zdůvodňuje náklady na vyhrazenou infrastrukturu testování výkonu pro vaši úlohu.
Ověření výkonu v produkčním prostředí
Testovací prostředí nemohou plně replikovat reálné podmínky, které ovlivňují výkon. Produkční testy zveřejňují problémy, které se týkají pouze skutečného využití, a poskytují přesné směrné plány pro budoucí optimalizaci. Některé požadavky na výkon je možné ověřit pouze v případě, že se skuteční uživatelé, data a infrastruktura protínají.
Spusťte řízené produkční testování. Naplánujte testy v době mimo špičku, abyste pochopili, jak se vaše úloha chová při vyčerpání prostředků a zotavení po selháních.
Produkční testování odhalí charakteristiky výkonu za skutečných podmínek, včetně:
- Realističtí vzorce chování uživatelů a objemy dat
- Skutečná latence sítě a variace šířky pásma
- Geografické distribuční efekty
- Výkon a závislosti rozhraní API třetích stran
- Skutečné chování při ukládání do mezipaměti a charakteristiky infrastruktury
Používejte techniky progresivního testování. Začněte malými procenty provozu a postupně se zvětšujte. Sledujte dobu odezvy, propustnost, chybovost a využití prostředků v každém kroku. Tento postup omezuje riziko při identifikaci bodu způsobujícího chybu, odhalení kritických bodů a poskytnutí přesného přehledu chování systému pod rostoucí poptávkou.
Průběžně monitorujte produkční testy , abyste mohli včas najít problémy. Implementujte automatizované záruky, které zastaví testy, pokud mají negativní dopad na uživatele, jako jsou automatizované mechanismy vrácení zpět a upozorňování v reálném čase. Tyto techniky zajišťují rychlou reakci a minimalizují přerušení.
Note
Při spouštění kontrolovaných testů výkonnosti v produkčním prostředí je potřeba přidělit dodatečnou kapacitu pro zpracování dalšího zatížení generovaného testy.
Riziko: Produkční testování přímo ovlivňuje skutečné zákazníky, protože může vytvořit další zatížení a narušit provoz. Vždy implementujte záruky, omezte vystavení a připravte plány vrácení zpět, abyste minimalizovali potenciální obchodní dopad. Vyvažte výhody reálného testování proti potenciálnímu obchodnímu dopadu na narušení živých uživatelů.
Ověření změn pomocí experimentů založených na hypotézách
Pomocí experimentování založeného na hypotézách můžete provést testování výkonu. Navrhujte jednotlivé experimenty s výkonem tak, aby vytvářely smysluplné výsledky.
Začněte se zaměřením na hypotézu o výkonu vaší úlohy a definujte měřitelná kritéria úspěchu, která vedou k použitelným rozhodnutím. Vaše hypotéza může být například: "Přidání indexu do tabulky objednávek zkracuje dobu dotazu o 70% v případě zatížení ve špičce". Směrný plán je aktuální schéma a varianta je schéma s novým indexem. Spusťte stejný zátěžový test pro obě verze. Zachyťte latenci dotazů, využití procesoru databáze a propustnost a pak porovnejte výsledky a určete, jestli hypotéza platí.
Kompromis. Experimenty řízené hypotézou vyžadují spuštění stejných testů na standardních i variantových konfiguracích, což zvyšuje náklady na infrastrukturu a dobu provádění testů. Zaměřte se na změny s vysokým dopadem, kdy potenciální zvýšení výkonu odůvodňuje další testovací úsilí.
Použití více typů testů výkonnosti
Testování výkonnosti zahrnuje celou řadu testů, které v různých podmínkách hodnotí rychlost, stabilitu a škálovatelnost. Každý typ testu cílí na různé aspekty výkonu vaší úlohy. Odhalí jedinečné poznatky a umožňuje úplné vyhodnocení, které přesahuje funkční testování.
K ověření úloh z různých úhlů použijte více typů testů. Zátěžové testování například určí bod zlomu při špičkovém zatížení, ale pouze testování vytrvalosti odhalí úniky paměti, které se projeví až po několika hodinách nebo dnech.
Zvolte typy testů na základě toho, co potřebujete ověřit.
Následující tabulka ukazuje, kdy použít každý typ testu a co ukazuje o vaší úloze. I když tato tabulka není vyčerpávajícím seznamem, slouží jako ilustrativní příklad.
| Typ testování | Primární účel | Kdy použít | Co to odhalí | Prostředí |
|---|---|---|---|---|
| Zátěžové testování | Ověřit, že systém zpracovává očekávané uživatelské zatížení při normálním a špičkovém zatížení. | Začněte brzy, spouštějte často | Standardní výkon, limity kapacity, efektivita škálování | Přípravné nebo produkční prostředí |
| Zátěžové testování | Principy systémových limitů a zásadních bodů | Před tím, než bude systém připravený pro produkční prostředí | Maximální kapacita, režimy selhání, chování při obnovení | Vyhrazené prostředí pro testování výkonu |
| Testování nárazového zatížení | Zajištění, že systém zpracovává náhlé špičky provozu | Začněte brzy, zejména u veřejně přístupných aplikací | Reakce automatického škálování, zpracování front, graciézní degradace | Přípravné nebo produkční prostředí |
| Vytrvalostní/ zatěžovací testování | Detekce problémů, které se zobrazují pouze v delších obdobích | Po uplynutí počátečních zátěžových testů | Úniky paměti, vyčerpání prostředků, potíže s fondem připojení | Produkční prostředí s úplným přidělením prostředků |
Nepokoušejte se okamžitě implementovat všechny typy testů. Začněte základním zátěžovým testováním, abyste porozuměli základnímu výkonu. Když identifikujete rizika a získáte zkušenosti, rozšiřte na zátěžové testování, testování nárazů a nakonec testování odolnosti.
Kompromis. Testování výkonnosti napříč všemi typy testů vyžaduje značné časové a investice do infrastruktury. Shodujte své investice do testování s obchodním rizikem.
Použití vzorů a charakteristik dat z reálného světa
Testování pomocí realistických dat poskytuje přesné přehledy o spotřebě prostředků, chování systému a skrytých problémech s výkonem.
Vytvořte různé testovací datové sady, které představují různé scénáře, profily uživatelů a datové svazky. Pomocí vstupních variant a randomizace napodobte skutečnou rozmanitost uživatelů. Uveďte hraniční případy, které můžou způsobovat problémy s výkonem, jako jsou velké datové části, složité dotazy nebo vysoká souběžnost.
Testovací data by měla vypadat jako skutečná produkční data. Používejte syntetická data, která mají charakteristiky produkčních dat. Zarezervujte produkční datové sady (správně anonymizované) pro určité scénáře, jako je demonstrace chování správy dat, například konzistence transakcí, latence a zpracování objemu dat.
Simulace syntetických transakcí, které napodobují skutečné uživatelské pracovní postupy. Skriptujte tyto transakce a spusťte je opakovaně, aby se vygenerovalo zatížení, které odráží způsob, jakým se vaše úloha skutečně používá.
Vaše testovací scénáře by měly odrážet skutečné vzorce využití, jako je souběžný uživatelský přístup, období zatížení ve špičce a konkrétní sekvence transakcí. Ujistěte se, že scénáře odpovídají obchodním cílům, aby výsledky výkonu odrážely skutečnou hodnotu uživatele.
Při testování při zatížení zahrňte skutečná volání rozhraní API třetích stran. Napodobování externích závislostí umožňuje rychlejší a předvídatelnější běh testů, ale skryje skutečné problémy s výkonem. Pokud vaše aplikace závisí na rozhraní API procesoru plateb, otestujte skutečná volání, abyste porozuměli celkové latenci.
Použití výsledků testů k vedení rozhodnutí o návrhu
Výsledky testů řídí rozhodnutí o návrhu vytvořením spolehlivých směrných plánů a úsilím o optimalizaci.
Vytvořte základní měření. Směrné plány pomáhají identifikovat trendy a anomálie a zjistit, jestli změny optimalizace přinášejí vylepšení. Potřebujete spolehlivé výchozí hodnoty ke sledování trendů výkonu v průběhu času.
Zaznamenává metriky výkonu během počátečních testů. Tato nahrávka je vaší základní úrovní, momentkou "normálního" výkonu. V následných spuštěních porovnejte nové výsledky s tímto referenčním základem a zjistěte změny výkonu. Při zkoumání dat zvažte dopad, frekvenci, náklady na opravu a rizika kritérií změn, abyste porozuměli chování systému za různých podmínek. Hledejte vzory, které ukazují, kde dochází ke snížení výkonu. Pomocí tohoto přehledu můžete určit prioritu úsilí o optimalizaci.
Optimalizace je iterativní proces, který by měl být řízen daty. Vyhraďte si vyhrazený čas ve vývojovém cyklu pro optimalizaci výkonu. Pomocí směrných plánů změřte dopad změn a zajistěte, aby poskytovaly očekávaná vylepšení bez zavedení regresí.
Korelace výkonu s obchodními metrikami Připojte vylepšení výkonu k obchodním výsledkům, jako jsou výnosy, zapojení uživatelů, spokojenost zákazníků a míra převodu, abyste odůvodnili trvalé investice do optimalizace výkonu.
Note
Pravidelně kontrolujte a aktualizujte směrné plány po významných změnách úloh, jako jsou změny architektury, nové funkce nebo úpravy škálování. Provedením této akce zajistíte, aby vaše cíle výkonu zůstaly relevantní.
Udržování testovacích prostředků v souladu s aktuálními vzory využití
Prostředky testů výkonnosti obsahují důležité znalosti o očekávaném chování vaší úlohy, přijatelných prahových hodnotách výkonu a realistických vzorech provozu.
Uspořádejte testovací sady podle typu. Udržujte zátěžové testy, stresové testy a testy vytrvalosti v samostatných souborech. Nemíchejte je. Každý typ má jiné požadavky na nastavení, doby trvání spuštění a kritéria úspěchu. Uspořádané sady usnadňují spouštění cílových testů, porovnávání výsledků napříč běhy a udržování jednotlivých sad nezávisle na sobě.
Pravidelně aktualizujte testovací data. Zastaralá testovací data vedou k nerealistickým výsledkům. Znovu vygenerujte testovací data tak, aby odrážela aktuální charakteristiky produkčních dat při každé změně datového modelu, růstu objemu dat nebo posunu demografických údajů uživatelů.
Projděte si testovací scénáře, jak se vaše úlohy vyvíjejí. Naplánujte pravidelné kontroly, abyste zajistili, že vaše scénáře stále odrážejí skutečné využití. Scénáře jsou zastaralé jako:
- Chování uživatele se v průběhu času mění.
- Vzorce provozu se mění s tím, jak roste vaše uživatelská základna
- Nové funkce představují různé vzory použití
- Infrastruktura se škáluje tak, aby splňovala nové požadavky na kapacitu
Usnadnění na platformě Azure
Azure Pipelines umožňuje integrovat testování výkonu do kanálu CI/CD. Zátěžové testování můžete přidat jako krok v pipeline, abyste ověřili výkon a škálovatelnost vašich aplikací.
Azure Chaos Studio pomáhá vkládat do aplikace skutečné chyby, abyste mohli spouštět řízené experimenty injektáže chyb. Experimenty vám pomůžou měřit, pochopit a zlepšit odolnost cloudových aplikací a služeb.
Azure Load Testing je služba zátěžového testování, která generuje vysoké zatížení pro libovolnou aplikaci. Zátěžové testování poskytuje možnosti pro automatizaci zátěžových testů a jejich integraci do pracovního postupu kontinuální integrace a průběžného doručování (CI/CD). Můžete definovat kritéria testu, například průměrnou dobu odezvy nebo prahové hodnoty chyb, a automaticky zastavit zátěžové testy na základě konkrétních chybových podmínek. Zátěžové testování nabízí řídicí panel, který během zátěžového testu poskytuje živé aktualizace a podrobné metriky prostředků komponent aplikací Azure. Můžete analyzovat výsledky testů, identifikovat kritické body výkonu a porovnat několik testovacích běhů, abyste pochopili regrese výkonu v průběhu času.
Azure Monitor je komplexní řešení monitorování pro shromažďování, analýzu a reagování na telemetrii z cloudových a místních prostředí. Application Insights je rozšířením Monitoru, které poskytuje funkce APM. Application Insights můžete použít k monitorování aplikací během vývoje a testování a také v produkčním prostředí.
Související odkazy
Kontrolní seznam efektivity výkonu
Projděte si kompletní sadu doporučení.