Antipattern hlučný soused

Azure

Víceklientové systémy sdílejí prostředky mezi tenanty. Vzhledem k tomu, že tenanti používají stejné sdílené prostředky, může mít aktivita jednoho tenanta negativní dopad na používání systému jiným tenantem.

Popis problému

Když vytváříte službu, kterou bude sdílet více zákazníků nebo tenantů, můžete ji vytvořit tak, aby byla s více tenanty. Výhodou víceklientských systémů je možnost sdružování a sdílení prostředků mezi tenanty. To často vede k nižším nákladům a vyšší efektivitě. Pokud ale jeden tenant používá nepřiměřeně velké množství prostředků dostupných v systému, může dojít k poklesu celkového výkonu systému. K problému s hlučným sousedem dochází, když je výkon jednoho tenanta snížený kvůli aktivitám jiného tenanta.

Představte si příklad systému s více tenanty se dvěma tenanty. Vzory využití tenanta A a vzorce využití tenanta B se shodují, což znamená, že ve špičkách je celkové využití prostředků vyšší než kapacita systému:

Obrázek znázorňující využití prostředků dvou tenantů Tenant A využívá úplnou sadu systémových prostředků, což znamená, že u tenanta B dochází k selháním.

Je pravděpodobné, že přednost bude mít žádost tenanta, která přišla jako první. Pak u druhého tenanta dojde k problému s hlučným sousedem. Případně můžou oba tenanti zjistit, že jejich výkon je na tom špatně.

Problém s hlučným sousedem také nastává, i když každý jednotlivý tenant využívá relativně malé množství kapacity systému, ale kolektivní využití prostředků mnoha tenantů vede k celkovému využití:

Obrázek se 3 tenanty, z nichž každý využívá méně maximální propustnosti řešení. Celkem tři tenanti spotřebovávají kompletní systémové prostředky.

K tomu může dojít v případě, že máte více tenantů, kteří mají podobné vzorce používání, nebo pokud jste nezřídili dostatečnou kapacitu pro kolektivní zatížení systému.

Jak problém vyřešit

Problémy s hlučnými sousedy jsou inherentním rizikem ve víceklientských systémech a není možné zcela vyloučit možnost, že by byl ovlivněn hlučným sousedem. Klienti i poskytovatelé služeb ale můžou podniknout určité kroky, aby se snížila pravděpodobnost problémů s hlučným sousedem nebo aby se zmírnily jejich účinky při jejich výskytu.

Akce, které můžou klienti provádět

Akce, které můžou poskytovatelé služeb provádět

  • Monitorujte využití prostředků pro váš systém. Monitorujte celkové využití prostředků i prostředky, které každý tenant používá. Nakonfigurujte upozornění, která budou zjišťovat špičky ve využití prostředků, a pokud je to možné, nakonfigurujte automatizaci, která automaticky zmírní známé problémy vertikálním navýšením nebo snížením kapacity.
  • Použijte zásady správného řízení prostředků. Zvažte použití zásad, které zabrání tomu, aby jeden tenant zahltěl systém a snížil kapacitu dostupnou ostatním. Tento krok může mít podobu vynucení kvóty prostřednictvím modelu omezování nebo modelu omezení rychlosti.
  • Zřiďte další infrastrukturu. Tento proces může zahrnovat vertikální navýšení kapacity upgradem některých komponent řešení nebo může zahrnovat horizontální navýšení kapacity zřízením dalších horizontálních oddílů, pokud postupujete podle vzoru horizontálního dělení, nebo razítka, pokud postupujete podle vzoru Razítka nasazení.
  • Umožněte tenantům zakoupit předem zřízenou nebo rezervovanou kapacitu. Tato kapacita poskytuje klientům větší jistotu, že vaše řešení adekvátně zvládá jejich úlohy.
  • Vyhladit využití prostředků tenantů. Můžete například vyzkoušet jeden z následujících přístupů:
    • Pokud hostujete více instancí svého řešení, zvažte opětovné vyrovnání tenantů napříč instancemi nebo kolky. Zvažte například umístění tenantů s předvídatelnými a podobnými vzory použití mezi více kolků, aby se zploštěly špičky jejich využití.
    • Zvažte, jestli máte procesy na pozadí nebo úlohy náročné na prostředky, které nejsou časově závislé. Tyto úlohy spouštějte asynchronně v době mimo špičku, abyste zachovali kapacitu prostředků ve špičce pro úlohy citlivé na čas.
  • Zkontrolujte, jestli podřízené služby poskytují ovládací prvky pro zmírnění problémů s hlučnými sousedy. Například při použití Kubernetes zvažte použití limitů podů a při použití Service Fabric zvažte použití integrovaných funkcí zásad správného řízení.
  • Omezte operace, které můžou klienti provádět. Můžete například zabránit klientům v provádění operací, které budou spouštět velmi rozsáhlé databázové dotazy, například zadáním maximálního počtu vrácených záznamů nebo časového limitu pro dotazy. Tato akce snižuje riziko, že tenanti provádějí akce, které můžou negativně ovlivnit ostatní tenanty.
  • Zajistěte systém QoS (Quality of Service). Když použijete technologii QoS, upřednostníte některé procesy nebo úlohy před ostatními. Díky tomu, že do návrhu a architektury zohledníte QoS, můžete zajistit, aby operace s vysokou prioritou měli přednost v případě, že je na vaše prostředky tlak.

Požadavky

Ve většině případů nemají jednotliví tenanti v úmyslu způsobovat problémy se sousedy s hlučnostmi. Jednotliví tenanti ani nemusí vědět, že jejich úlohy způsobují problémy s hlučným sousedem pro ostatní. Je však také možné, že někteří tenanti můžou zneužít ohrožení zabezpečení ve sdílených komponentách k útoku na službu, a to buď jednotlivě, nebo provedením distribuovaného útoku dDoS (DDoS).

Bez ohledu na příčinu je důležité tyto problémy považovat za problémy se zásadami správného řízení prostředků a použít kvóty využití, omezování a řízení zásad správného řízení, aby se problém zmírnil.

Poznámka

Ujistěte se, že jste klientům sdělili jakékoli omezování, které použijete, nebo jakékoli kvóty využití vaší služby. Je důležité, aby spolehlivě zpracovávaly neúspěšné požadavky a nepřekvapily je žádná omezení nebo kvóty, které uplatňujete.

Jak zjistit problém

Z pohledu klienta se problém s hlučným sousedem obvykle projevuje jako neúspěšné požadavky serveru nebo požadavky, které trvá dlouhou dobu. Konkrétně platí, že pokud stejný požadavek jindy uspěje a zdá se, že náhodně selže, může dojít k problému s hlučným sousedem. Klientské aplikace by měly zaznamenávat telemetrii, aby bylo sledovat úspěšnost a výkon požadavků na služby, a aplikace by také měly zaznamenávat metriky výkonu podle směrného plánu pro účely porovnání.

Z pohledu služby se problém s hlučným sousedem může projevit několika způsoby:

  • Špičky ve využití prostředků Je důležité mít jasné znalosti o normálním využití prostředků podle směrného plánu a nakonfigurovat monitorování a výstrahy pro detekci špiček ve využití prostředků. Nezapomeňte zvážit všechny prostředky, které by mohly ovlivnit výkon nebo dostupnost vaší služby. Mezi tyto prostředky patří metriky, jako je využití procesoru a paměti serveru, vstupně-výstupních operací disku, využití databáze, síťový provoz a metriky, které jsou zveřejněné spravovanými službami, jako je počet požadavků a syntetické a abstraktní metriky výkonu, jako jsou jednotky žádostí služby Azure Cosmos DB.
  • Selhání při provádění operace pro tenanta Hledejte zejména chyby, ke kterým dochází, když tenant nepoužívá velkou část prostředků systému. Takový model může znamenat, že tenant je obětí problému s hlučným sousedem. Zvažte sledování spotřeby prostředků podle tenanta. Například při použití služby Azure Cosmos DB zvažte protokolování jednotek žádostí použitých pro každý požadavek a přidejte identifikátor tenanta jako dimenzi do telemetrie, abyste mohli agregovat spotřebu jednotek žádostí pro každého tenanta.

Přispěvatelé

Tento článek spravuje Microsoft. Původně ji napsali následující přispěvatelé.

Hlavní autor:

  • John Downs | Hlavní inženýr zákazníka, FastTrack pro Azure

Další přispěvatelé:

Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.