Sdílet prostřednictvím


Monitorování a správa výkonu služby Azure SQL Database v aplikaci SaaS s více tenanty

Platí pro:Azure SQL Database

V tomto kurzu se zkoumá několik klíčových scénářů správy výkonu používaných v aplikacích SaaS. Použití generátoru zatížení k simulaci aktivity ve všech databázích tenantů, předdefinované funkce monitorování a upozorňování služby SQL Database a elastických fondů jsou demonstrované.

Aplikace SaaS Database SaaS Tickets Wingtip používá datový model s jedním tenantem, kde má každý místo (tenant) svou vlastní databázi. Stejně jako u většiny aplikací SaaS je předpokládaný vzorek úloh tenanta nepředvídatelný a sporadický. Jinými slovy to znamená, že prodej lístků může probíhat kdykoli. Pro využití tohoto typického vzoru využití databáze se databáze tenantů nasazují do elastických fondů. Elastické fondy optimalizují náklady na řešení prostřednictvím sdílení prostředků mezi mnoha databázemi. S tímto typem vzorců je důležité monitorovat využití databáze a prostředků fondu k zajištění, že jsou přiměřeně vyvážená přetížení mezi jednotlivými fondy. Je také potřeba zajistit, že jednotlivé databáze mají adekvátní prostředky a že fondy nedosahují limitů eDTU. Tento kurz se věnuje způsobům monitorování a správy databází a fondů a uvádí, jak se provádějí nápravné akce v reakci na variace v úloze.

V tomto kurzu se naučíte:

  • Simulace použití v databázích tenantů pomocí dodaného generátoru zatížení
  • Monitorování databází tenantů při reakci na zvýšení zatížení
  • Vertikální navýšení kapacity elastického fondu v reakci na zvýšení zatížení databáze
  • Zřízení druhého elastického fondu pro vyrovnání zatížení činnosti databáze

Předpokladem dokončení tohoto kurzu je splnění následujících požadavků:

Úvod do vzorů správy výkonu SaaS

Správa výkonu databáze sestává z kompilování a analýz dat výkonu a následného reagování na tato data prostřednictvím úpravy parametrů pro řízení přijatelné doby odezvy na aplikaci. Při hostování více tenantů představují elastické fondy nákladově efektivní způsob, jak poskytovat a spravovat prostředky pro skupinu databází s nepředvídatelnými úlohami. Při určitých vzorcích úloh může být správa ve fondu užitečná pro pouhé dvě databáze S3.

application diagram

Fondy a databáze ve fondech by se měly monitorovat, aby se zajistilo, že zůstanou v přijatelném rozsahu výkonu. Vylaďte konfiguraci fondu tak, aby vyhovovala potřebám agregované úlohy všech databází a zajistila, aby byly jednotky eDTU fondu vhodné pro celkovou úlohu. Upravte maximální a minimální hodnoty eDTU jednotlivých databází na vhodné hodnoty pro vaše konkrétní aplikační požadavky.

Strategie výkonu aplikací

  • Abyste se vyhnuli ručnímu monitorování výkonu, je nejúčinnější nastavit výstrahy, které se aktivují, když databáze nebo fondy vychýlí z normálních rozsahů.
  • Pokud chcete reagovat na krátkodobé výkyvy v agregované velikosti výpočetních prostředků fondu, je možné vertikálně navýšit nebo snížit kapacitu úrovně eDTU fondu. Pokud k tomuto kolísání dochází pravidelně nebo je předvídatelné, je možné naplánovat automatické škálování fondu. Pokud například víte, že je úloha malého rozsahu, třeba přes noc nebo o víkendech, můžete vertikálně snížit kapacitu.
  • Pokud chcete reagovat na dlouhodobější kolísání nebo změny počtu databází, je možné přesunout jednotlivé databáze do jiných fondů.
  • Aby bylo možné reagovat na krátkodobé zvýšení zatížení jednotlivých databází, je možné vyčíst z fondu a přiřadit individuální velikost výpočetních prostředků. Po snížení zatížení je možné databázi vrátit do fondu. Pokud je to předem známo, je možné databáze předem přesunout, aby se zajistilo, že databáze bude mít vždy prostředky, které potřebuje, a vyhnout se dopadu na jiné databáze ve fondu. Pokud je tento požadavek předvídatelný, například v místě, kde se předpokládá navýšení prodeje lístků na oblíbenou akci, je možné toto chování správy začlenit do aplikace.

Azure Portal poskytuje integrované monitorování a upozorňování pro většinu prostředků. Monitorování a upozorňování je k dispozici v databázích a fondech. Toto integrované monitorování a upozorňování je specifické pro prostředky, takže je vhodné ho použít pro malý počet prostředků, ale při práci s mnoha prostředky to není velmi výhodné.

V případě scénářů s velkým objemem, ve kterých pracujete s mnoha prostředky, je možné použít protokoly služby Azure Monitor. Jedná se o samostatnou službu Azure, která poskytuje analýzy nad vygenerovanými protokoly shromážděné v pracovním prostoru služby Log Analytics. Protokoly služby Azure Monitor můžou shromažďovat telemetrii z mnoha služeb a používat k dotazování a nastavení upozornění.

Získání skriptů aplikace SaaS typu Wingtip Tickets pro jednotlivé tenanty

Skripty a zdrojový kód aplikace Wingtip Tickets SaaS pro víceklientské databáze a zdrojový kód aplikace jsou k dispozici v úložišti WingtipTicketsSaaSaSaS-DbPerTenant na GitHubu. V obecných doprovodných materiálech najdete pokyny ke stažení a odblokování skriptů SaaS pro Wingtip Tickets.

Zřízení dalších tenantů

I když fondy můžou být nákladově efektivní jenom se dvěma databázemi S3, platí, že čím více databází fond obsahuje, tím efektivnější z hlediska nákladů začne být efekt zprůměrování. Pro zajištění správného porozumění fungování monitorování a správy výkonu na škále vyžaduje tento kurz, abyste měli nasazených nejméně 20 databází.

Pokud jste už v předchozím kurzu zřídili dávku tenantů, přejděte do části Simulace využití ve všech databázích tenantů .

  1. V prostředí PowerShell ISE otevřete ...\Learning Modules\Performance Monitoring and Management\Demo-PerformanceMonitoringAndManagement.ps1. Tento skript nechte otevřený, protože během tohoto kurzu budete spouštět několik scénářů.
  2. Nastavte $DemoScenario = 1, Zřízení dávky tenantů
  3. Stisknutím klávesy F5 spusťte skript.

Skript nasadí 17 tenantů za méně než pět minut.

Skript New-TenantBatch používá vnořenou nebo propojenou sadu šablon Resource Manageru , které vytvoří dávku tenantů, která ve výchozím nastavení zkopíruje databázi basetenantdb na serveru katalogu, vytvoří nové databáze tenanta, pak je zaregistruje v katalogu a nakonec je inicializuje s názvem tenanta a typem místa. To je konzistentní se způsobem, jakým aplikace zřizuje nového tenanta. Všechny změny provedené v basetenantdb se použijí na všechny nové tenanty zřízené od té doby. V kurzu Správa schématu se dozvíte, jak provádět změny schématu v existujících databázích tenantů (včetně databáze basetenantdb).

Simulace využití ve všech databázích tenantů

K dispozici je skript Demo-PerformanceMonitoringAndManagement.ps1 , který simuluje úlohu spuštěnou ve všech databázích tenantů. Zatížení se vygeneruje pomocí jednoho z dostupných scénářů načítání:

Ukázka Scénář
2 Generování normální intenzity zatížení (přibližně 40 DTU)
3 Generování zatížení s delšími a častějšími nárůsty zatížení na databázi
4 Generování zatížení s vyššími nárůsty DTU na databázi (přibližně 80 DTU)
5 Generování normálního zatížení a vysokého zatížení v jednom tenantovi (přibližně 95 DTU)
6 Generování nevyváženého zatížení mezi více fondy

Generátor zatížení použije syntetické zatížení jenom pro CPU na každé databázi tenantů. Generátor spustí úlohu pro každou databázi tenantů, která pravidelně volá uloženou proceduru generující zatížení. Úrovně zatížení (v eDTU), doba trvání a intervaly jsou napříč všemi databázemi různé, což simuluje nepředvídanou činnost tenanta.

  1. V prostředí PowerShell ISE otevřete ...\Learning Modules\Performance Monitoring and Management\Demo-PerformanceMonitoringAndManagement.ps1. Tento skript nechte otevřený, protože během tohoto kurzu budete spouštět několik scénářů.
  2. Nastavte $DemoScenario = 2, Vygenerujte normální intenzitu zatížení.
  3. Stisknutím klávesy F5 použijte zatížení u všech databází tenantů.

Wingtip Tickets SaaS Database Per Tenant je aplikace SaaS a reálné zatížení aplikace SaaS je obvykle občasné a nepředvídatelné. Abychom takovýto scénář nasimulovali, vytváří generátor zatížení náhodné zatížení rozdělené mezi všechny tenanty. Aby se vynořil model zatížení, je potřeba několik minut, takže před pokusem o monitorování zatížení v následujících částech spusťte generátor zatížení po dobu 3 až 5 minut.

Důležité

Generátor zatížení běží jako řada úloh v místní relaci prostředí PowerShell. Nechte otevřenou kartu Demo-PerformanceMonitoringAndManagement.ps1. Pokud tuto kartu zavřete nebo pozastavíte počítač, generátor zatížení se zastaví. Generátor zatížení zůstává ve stavu vyvolání úlohy, ve kterém generuje zatížení všech nových tenantů, které jsou zřízeny po spuštění generátoru. Pomocí ctrl-C ukončete vyvolání nových úloh a ukončete skript. Generátor zatížení bude dál běžet, ale pouze u stávajících tenantů.

Monitorování využití prostředků pomocí webu Azure Portal

Pokud chcete monitorovat využití prostředků, které je výsledkem použitého zatížení, otevřete portál do fondu obsahujícího databáze tenantů:

  1. Otevřete Azure Portal a přejděte na server tenants1-dpt-USER><.
  2. Přejděte dolů na elastické fondy a klikněte na Pool1. Tento fond obsahuje všechny dosud vytvořené databáze tenantů.

Prohlédněte si grafy monitorování elastického fondu a monitorování elastické databáze.

Využití prostředků fondu je agregované využití databáze pro všechny databáze ve fondu. V databázovém grafu je pět nejžhavějších databází:

database chart

Vzhledem k tomu, že fond obsahuje další databáze nad rámec pěti hlavních, využití fondu ukazuje aktivitu, která se neprojeví v grafu prvních pěti databází. Další podrobnosti získáte kliknutím na Využití prostředků databáze:

database resource utilization

Nastavení výstrah výkonu ve fondu

Nastavte upozornění na fond, který se aktivuje při >75% využití následujícím způsobem:

  1. Otevřete fond1 (na serveru tenants1-dpt-user><) na webu Azure Portal.

  2. Klikněte na Pravidla výstrah a potom na + Přidat výstrahu:

    add alert

  3. Zadejte název, například High DTU,

  4. Nastavte následující hodnoty:

    • Metrika = procento eDTU
    • Podmínka = větší než
    • Prahová hodnota = 75
    • Období = za posledních 30 minut
  5. Přidejte e-mailovou adresu do pole Další e-maily správce a klikněte na OK.

    set alert

Vertikální navýšení kapacity zaneprázdněného fondu

Pokud se agregovaná úroveň zatížení ve fondu zvýší na bod, která fond navyšuje na maximální hodnotu a dosáhne 100% využití eDTU, má to vliv na individuální výkon databáze a potenciálně vykazuje pomalejší doby odezvy pro všechny databáze ve fondu.

Z krátkodobého hlediska zvažte vertikální navýšení kapacity fondu a poskytnutí dalších prostředků nebo odebrání databází z fondu (jejich přesun do jiných fondů nebo z fondu na samostatnou úroveň služby).

Pokud chcete zlepšit výkon databáze, zvažte optimalizaci dotazů nebo využití indexu. Podle toho, jak je aplikace citlivá na problémy s výkonem, se osvědčilo navýšit kapacitu fondu předtím, než dosáhne 100% využití eDTU. Použijte výstrahu, abyste byli předem upozornění.

Zaneprázdněný fond můžete simulovat tak, že zvýšíte zatížení vytvořené generátorem. Příčinou častějšího nárůstu počtu databází a delšího zvýšení agregovaného zatížení fondu beze změny požadavků jednotlivých databází. Škálování fondu se snadno provádí na portálu nebo z prostředí PowerShell. Při tomto cvičení se používá portál.

  1. Nastavte možnost $DemoScenario = 3, Generování zatížení s delšími a častějšími nárůsty zatížení na databázi na zvýšení intenzity agregovaného zatížení ve fondu beze změny vrcholového zatížení požadovaného jednotlivými databázemi.

  2. Stisknutím klávesy F5 použijte zatížení u všech databází tenantů.

  3. Přejděte na web Pool1 na webu Azure Portal.

Monitorujte zvýšené využití eDTU fondu v horním grafu. Spuštění nového vyššího zatížení trvá několik minut, ale měli byste rychle vidět, že fond začne dosáhnout maximálního využití a s tím, jak zatížení roste do nového modelu, fond rychle přetíží.

  1. Pokud chcete vertikálně navýšit kapacitu fondu, klikněte v horní části stránky Fond1 na Konfigurovat fond.
  2. Upravte nastavení eDTU fondu na 100. Změna eDTU fondu se nemění podle nastavení databáze (což je stále maximálně 50 eDTU na databázi). Nastavení pro jednotlivé databáze můžete zobrazit na pravé straně stránky Konfigurovat fond .
  3. Kliknutím na Uložit odešlete žádost o škálování fondu.

Vraťte se na Přehled fondu1>a zobrazte si grafy monitorování. Monitorujte účinek poskytování fondu více prostředků (i když s několika databázemi a randomizovaným zatížením není vždy snadné je snadno zobrazit, dokud nějakou dobu neběžíte). Při interpretaci grafů mějte na paměti, že 100 % v horním grafu teď reprezentuje 100 eDTU, zatímco v dolním grafu je 100 % vždy 50 eDTU, protože maximum na databázi je 50 eDTU.

Databáze je v průběhu procesu online a plně dostupná. A nakonec – protože je každá databáze připravená k aktivaci s eDTU nového fondu, bude každé aktivní propojení přerušeno. Kód aplikace by měl vždy být zapsán tak, aby se znovu pokoušel obnovit porušené propojení a tím pádem se znovu připojí k databázi ve fondu s navýšenou kapacitou.

Vyrovnávání zatížení mezi fondy

Jako alternativu navýšení kapacity fondu vytvořte druhý fond a přemístěte do něho databáze, aby se vyrovnalo zatížení mezi dvěma fondy. K tomu je potřeba vytvořit tento nový fond na stejném serveru jako první.

  1. Na webu Azure Portal otevřete server tenants1-dpt-USER<>.

  2. Kliknutím na + Nový fond vytvořte fond na aktuálním serveru.

  3. V šabloně elastického fondu :

    1. Nastavte název fondu2.

    2. Cenovou úroveň nechte jako Fond Standard.

    3. Klikněte na Konfigurovat fond

    4. Nastavte eDTU fondu na 50 eDTU.

    5. Kliknutím na přidat databáze zobrazíte seznam databází na serveru, který lze přidat do fondu2.

    6. Vyberte libovolných 10 databází, které chcete přesunout do nového fondu, a potom klepněte na tlačítko Vybrat. Pokud jste spustili generátor zatížení, služba už ví, že váš profil výkonu vyžaduje větší fond než výchozí velikost 50 eDTU a doporučuje začít nastavením 100 eDTU.

      recommendation

    7. Pro účely tohoto kurzu ponechte výchozí hodnotu na 50 eDTU a znovu klikněte na Vybrat .

    8. Výběrem možnosti OK vytvořte nový fond a přesuňte do něj vybrané databáze.

Vytvoření fondu a přesun databází trvá několik minut. Když se databáze přesunou, zůstanou online a plně přístupné až do poslední chvíle, kdy se všechna otevřená připojení zavřou. Pokud máte logiku opakování, klienti se pak připojí k databázi v novém fondu.

Přejděte na Pool2 (na serveru tenants1-dpt-user<>) a otevřete fond a monitorujte jeho výkon. Pokud ho nevidíte, počkejte na dokončení zřizování nového fondu.

Teď vidíte, že využití prostředků ve fondu1 se vypnulo a že fond2 je teď podobně načtený.

Správa výkonu jednotlivých databází

Pokud u jednotlivých databází ve fondu dochází k trvalému vysokému zatížení v závislosti na konfiguraci fondu, může mít tendenci dominovat prostředkům ve fondu a mít vliv na jiné databáze. Pokud bude aktivita pravděpodobně nějakou dobu pokračovat, může být databáze dočasně přesunuta z fondu. To umožňuje databázi mít další prostředky, které potřebuje, a izoluje ji od ostatních databází.

Toto cvičení simuluje vliv vysokého zatížení při prodeji lístků na populární koncert v Koncertním sále Contoso.

  1. V prostředí PowerShell ISE otevřete skript ...\Demo-PerformanceMonitoringAndManagement.ps1.

  2. Nastavte $DemoScenario = 5, vygenerujte normální zatížení a vysoké zatížení jednoho tenanta (přibližně 95 DTU).

  3. Nastavte $SingleTenantDatabaseName = contosoconcerthall

  4. Skript proveďte pomocí F5.

  5. Na webu Azure Portal přejděte na seznam databází na serveru tenants1-dpt-user<>.

  6. Klikněte na databázi contosoconcerthall .

  7. Klikněte na fond, ve kterém je contosoconcerthall . Vyhledejte fond v části Elastický fond .

  8. Prozkoumejte graf monitorování elastického fondu a vyhledejte zvýšené využití eDTU fondu. Po jedné až dvou minutách by mělo začít zvýšené zatížení a měli byste rychle zaznamenat, že fond dosáhl 100% využití.

  9. Zkontrolujte zobrazení monitorování elastické databáze, které zobrazuje nejžhavější databáze za poslední hodinu. Databáze contosoconcerthall by se měla brzy zobrazit jako jedna z pěti nejžhavějších databází.

  10. Klikněte na graf monitorováníelastické databáze a otevře se stránka Využití prostředků databáze, kde můžete monitorovat jakoukoli databázi. To vám umožní izolovat zobrazení databáze contosoconcerthall .

  11. V seznamu databází klikněte na contosoconcerthall.

  12. Kliknutím na cenovou úroveň (škálovat jednotky DTU) otevřete stránku Konfigurovat výkon , kde můžete nastavit samostatnou velikost výpočetních prostředků pro databázi.

  13. Kliknutím na kartu Standardní otevřete možnosti škálování ve standardní vrstvě.

  14. Posunutím posuvníku DTU doprava vyberte 100 DTU. Všimněte si, že to odpovídá cíli služby S3.

  15. Kliknutím na Tlačítko Použít přesunete databázi z fondu a nastavíte ji jako databázi Standard S3 .

  16. Po dokončení škálování monitorujte účinek databáze contosoconcerthall a fondu1 v ostřích elastického fondu a databáze.

Jakmile vysoké zatížení databáze contosoconcerthall ustoupí, měli byste ji okamžitě vrátit do fondu, aby se snížily její náklady. Pokud není jasné, kdy k tomu dojde, můžete nastavit upozornění na databázi, která se aktivuje, když využití DTU klesne pod maximální počet databází ve fondu. Přesunutí databáze do fondu je popsáno v cvičení 5.

Další vzory správy výkonu

Předběžné škálování ve výše uvedeném cvičení, ve kterém jste prozkoumali, jak škálovat izolovanou databázi, jste věděli, kterou databázi hledat. Pokud vedení společnosti Contoso Concert Hall informovalo Wingtips o nadcházejícím prodeji lístků, databáze mohla být předem přesunuta z fondu. Jinak by to vyžadovalo výstrahu ve fondu nebo v databázi s cílem zjistit, co se stalo. Nechcete se o tom dozvědět od ostatních tenantů ve fondu, kteří si stěžují na snížený výkon. A kdyby mohli tenanti předvídat, na jak dlouho by potřebovali další prostředky, můžete nastavit runbook Azure Automation na přesunutí databáze mimo fond a potom zpět podle předem definovaného plánu.

Samoobslužné škálování tenanta Protože škálování je úkol, který se snadno volá prostřednictvím rozhraní API pro škálu, můžete snadno vytvořit možnost škálovat databáze tenantů do aplikace směřující k tenantovi a nabízet ji jako funkci služby SaaS. Můžete například umožnit tenantům samoobslužné vertikální navýšení a snížení kapacity navázané přímo na fakturaci.

Vertikální navýšení a snížení kapacity fondu podle plánu tak, aby odpovídalo vzorům využití

Tam, kde agregované využití tenanta probíhá podle předvídatelných vzorců použití, můžete pomocí Azure Automation podle plánu vertikálně zvyšovat nebo snižovat kapacitu fondu. Můžete například snížit kapacitu fondu po 6. hodině večer a navýšit před 6. hodinou ráno ve dnech, kdy víte, že existuje pokles požadavků na prostředky.

Další kroky

V tomto kurzu se naučíte:

  • Simulace použití v databázích tenantů pomocí dodaného generátoru zatížení
  • Monitorování databází tenantů při reakci na zvýšení zatížení
  • Vertikální navýšení kapacity elastického fondu v reakci na zvýšení zatížení databáze
  • Zřízení druhého elastického fondu pro vyrovnání zatížení činnosti databáze

Kurz Obnovení jednoho tenanta

Další prostředky