Prevence chyb omezování rychlosti pro operace Azure Cosmos DB pro Apache Cassandra

PLATÍ PRO: Cassandra

Náklady na všechny databázové operace jsou normalizovány službou Azure Cosmos DB a jsou vyjádřeny jednotkami žádostí (RU). Jednotka požadavku je měna výkonu, která abstrahuje systémové prostředky, jako jsou procesor, IOPS a paměť, které jsou potřeba k provádění databázových operací podporovaných službou Azure Cosmos DB.

Operace Azure Cosmos DB for Apache Cassandra můžou selhat s chybami omezování rychlosti (OverloadedException/429), pokud překročí limit propustnosti tabulky (RU). To se dá zpracovat na straně klienta, jak je popsáno tady. Pokud se zásady opakování klienta nedají implementovat, aby zvládly selhání způsobené chybou omezování rychlosti, můžeme využít funkci opakování na straně serveru (SSR), kde se operace, které překračují limit propustnosti tabulky, po krátkém zpoždění automaticky opakují. Toto je nastavení na úrovni účtu a platí pro všechny klíčové prostory a tabulky v účtu.

Použití webu Azure Portal

  1. Přihlaste se k webu Azure Portal.

  2. Přejděte do svého účtu Azure Cosmos DB for Apache Cassandra.

  3. Přejděte do podokna Funkce pod oddílem Nastavení .

  4. Vyberte Možnost Opakovat na straně serveru.

  5. Kliknutím na Povolit tuto funkci povolíte pro všechny kolekce ve vašem účtu.

Snímek obrazovky s funkcí opakování na straně serveru pro Službu Azure Cosmos DB pro Apache Cassandra

Použití Azure CLI

  1. Zkontrolujte, jestli je pro váš účet už povolené SSR:

    az cosmosdb show --name accountname --resource-group resourcegroupname
    
  2. Povolit SSR pro všechny tabulky ve vašem databázovém účtu. Může trvat až 15 minut, než se tato změna projeví.

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableCassandra DisableRateLimitingResponses
    
  3. Následující příkaz zakáže opakování na straně serveru pro všechny tabulky ve vašem databázovém účtu odebráním DisableRateLimitingResponses ze seznamu možností. Může trvat až 15 minut, než se tato změna projeví.

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableCassandra
    

Nejčastější dotazy

Jak se žádosti opakovaně zkoušejí?

Žádosti se opakují nepřetržitě (pořád dokola), dokud se nedosáhne časového limitu 60 sekund. Pokud dojde k dosažení časového limitu, klient obdrží chybu časového limitu čtení nebo zápisu.

Kdy je SSR nejprospěšnější?

Opakování na straně serveru (SSR) je nejvhodnější, když dojde k náhlému prudkému prudkému nárůstu po krátkou dobu kratší než 1 minuta, kdy je možné se vyhnout chybám omezování. Pokud se pracovní zatížení zvýšilo a trvale by zůstalo nad zadanými RU, pak SSR moc nepomůže. Návrh je odpovídajícím způsobem navýšit POČET RU.

Navrhujete nastavení na straně klienta?

Po povolení služby SSR by klientská aplikace měla zvýšit časový limit čtení nad rámec nastavení serveru opakovat 60 sekund. Doporučujeme 90 sekund, abyste byli na bezpečnější straně.

Ukázkový ovladač kódu3

SocketOptions socketOptions = new SocketOptions()
	.setReadTimeoutMillis(90000); 

Ukázkový ovladač kódu4

ProgrammaticDriverConfigLoaderBuilder configBuilder = DriverConfigLoader.programmaticBuilder()
	.withDuration(DefaultDriverOption.REQUEST_TIMEOUT, Duration.ofSeconds(90)); 

Jak můžu monitorovat účinky opakování na straně serveru?

Chyby omezování rychlosti (429), které se opakovaně používají na straně serveru, můžete zobrazit v podokně Metriky služby Azure Cosmos DB. Tyto chyby nejdou do klienta, když je povolené SSR, protože se zpracovávají a opakují na straně serveru.

V protokolech prostředků služby Azure Cosmos DB můžete vyhledat položky protokolu obsahující estimatedDelayFromRateLimitingInMilliseconds.

Ovlivní opakování na straně serveru úroveň konzistence?

Opakování na straně serveru nemá vliv na úroveň konzistence. Pokud jsou požadavky omezené rychlostí, budou se opakovat na straně serveru (chyba 429).

Má opakování na straně serveru vliv na nějaký typ chyby, ke které může dojít u klienta?

Ne, opakování na straně serveru ovlivňuje pouze chyby omezování rychlosti (429) tím, že je zkusíte zopakovat na straně serveru. Tato funkce zabrání tomu, abyste museli zpracovávat chyby omezování rychlosti v klientské aplikaci. Všechny ostatní chyby budou chodit do klienta.

Další kroky

Další informace o řešení běžných chyb najdete v tomto článku:

Informace o zřizování propustnosti ve službě Azure Cosmos DB najdete v následujících článcích: