Upravit

Sdílet prostřednictvím


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žití systému jiného tenanta.

Popis problému

Když sestavíte službu, kterou bude sdílet více zákazníků nebo tenantů, můžete ji vytvořit tak, aby byla víceklientovaná. Výhodou víceklientskýchsystémůch To často vede k nižším nákladům a lepší efektivitě. Pokud ale jeden tenant používá nepřiměřenou částku prostředků dostupných v systému, může dojít k celkovému výkonu systému. K problému hlučného souseda 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 vzory využití tenanta B se shodují, což znamená, že ve špičce 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á selhání tenanta B.

Je pravděpodobné, že jakákoli žádost tenanta, která přišla, bude mít přednost. Druhý tenant pak bude mít problém s hlučným sousedem. Případně můžou oba tenanti najít problémy s výkonem.

K problému hlučného souseda dochází i v případě, že každý jednotlivý tenant spotřebovává relativně malé objemy kapacity systému, ale celkové využití prostředků mnoha tenantů vede k vrcholu celkového využití:

Obrázek se 3 tenanty, kteří spotřebovávají 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é vzory použití, 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ým sousedem jsou vlastním rizikem ve víceklientských systémech a není možné zcela eliminovat možnost, že by byla ovlivněna hlučným sousedem. Existuje však několik kroků, které mohou klienti i poskytovatelé služeb provést, aby se snížila pravděpodobnost problémů s hlučným sousedem nebo zmírnění jejich účinků při jejich pozorování.

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í tak, aby detekovali špičky využití prostředků, a pokud je to možné, nakonfigurujte automatizaci tak, aby automaticky zmírňovala známé problémy vertikálním navýšením nebo navýšením kapacity.
  • Použijte zásady správného řízení prostředků. Zvažte použití zásad, které brání zahlcení jednoho tenanta systému a snížení kapacity dostupné ostatním. Tento krok může mít formu vynucení kvóty, a to prostřednictvím vzoru omezování nebo modelu omezování rychlosti.
  • Zřiďte další infrastrukturu. Tento proces může zahrnovat vertikální navýšení kapacity upgradem některých součástí řešení nebo 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žňuje tenantům zakoupit předem zřízenou nebo rezervovanou kapacitu. Tato kapacita poskytuje tenantům větší jistotu, že vaše řešení adekvátně zpracovává své úlohy.
  • Vyhlazení využití prostředků tenantů Můžete například vyzkoušet jeden z následujících přístupů:
    • Pokud hostujete více instancí řešení, zvažte vyrovnávání tenantů napříč instancemi nebo razítky. Zvažte například umístění tenantů s předvídatelnými a podobnými vzory využití napříč několika razítky, aby se špičky jejich využití zploštěly.
    • Zvažte, jestli máte procesy na pozadí nebo úlohy náročné na prostředky, které nejsou citlivé na čas. Tyto úlohy můžete spouštět asynchronně v době mimo špičku, aby se zachovala kapacita 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ým sousedem. 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 možností zásad správného řízení.
  • Omezte operace, které můžou tenanti 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 jiné tenanty.
  • Poskytuje 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 faktoru QoS do návrhu a architektury můžete zajistit, aby operace s vysokou prioritou měli přednost v případě, že dojde k tlaku na vaše prostředky.

Důležité informace

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

Bez ohledu na příčinu je důležité s těmito problémy zacházet jako s problémy se zásadami správného řízení prostředků a používat kvóty využití, omezování a řízení zásad správného řízení pro zmírnění problému.

Poznámka:

Ujistěte se, že klientům sdělíte o omezeních, které použijete, nebo o jakýchkoli kvótách využití ve vaší službě. Je důležité, aby spolehlivě zpracovávaly neúspěšné požadavky a že nejsou překvapené žádnými omezeními nebo kvótami, které použijete.

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 proběhne jindy 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 pro sledování úspěšnosti a výkonu požadavků na služby a aplikace by také měly zaznamenávat základní metriky výkonu pro účely porovnání.

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

  • Špičky využití prostředků Je důležité mít jasné znalosti o normálním využití standardních prostředků a nakonfigurovat monitorování a výstrahy pro detekci špiček využití prostředků. Ujistěte se, že zvažujete 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 serveru a paměti, vstupně-výstupní operace disku, využití databáze, síťový provoz a metriky, které jsou vystaveny spravovanými službami, jako je počet požadavků a syntetické a abstraktní metriky výkonu, jako jsou jednotky žádostí Azure Cosmos DB.
  • Selhání při provádění operace pro tenanta Konkrétně hledejte selhání, ke kterým dochází, když tenant nepoužívá velkou část prostředků systému. Takový vzor může znamenat, že tenant je obětí problému hlučného souseda. 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 jednotlivé požadavky a přidejte identifikátor tenanta jako dimenzi telemetrie, abyste mohli agregovat spotřebu jednotek žádosti pro každého tenanta.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autor:

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

Další přispěvatelé:

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