Zabránění chybám omezování rychlosti pro operace Azure Cosmos DB pro Apache Cassandra
PLATÍ PRO: Cassandra
Služba Azure Cosmos DB normalizuje náklady na všechny databázové operace a vyjadřuje je jednotkami žádostí (RU). Jednotka žádosti 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 pro Apache Cassandra můžou selhat s chybami omezování rychlosti (PřetíženíException/429), pokud překročí limit propustnosti tabulky (RU). To je možné zpracovat na straně klienta, jak je popsáno zde. Pokud se zásady opakování klienta nedají implementovat pro zpracování selhání kvůli chybě 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é prodlevě automaticky opakují. Toto je nastavení na úrovni účtu, které platí pro všechny klíčové mezery a tabulky v účtu.
Použití portálu Azure Portal
Přihlaste se k portálu Azure.
Přejděte ke svému účtu Azure Cosmos DB for Apache Cassandra.
Přejděte do podokna Funkce pod oddílem Nastavení .
Vyberte opakování na straně serveru.
Kliknutím na Povolit povolíte tuto funkci pro všechny kolekce ve vašem účtu.
Použití Azure CLI
Zkontrolujte, jestli je pro váš účet už povolené rozhraní SSR:
az cosmosdb show --name accountname --resource-group resourcegroupname
Povolte SSR pro všechny tabulky v 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
Následující příkaz zakáže opakování na straně serveru pro všechny tabulky v databázovém účtu odebráním
DisableRateLimitingResponses
ze seznamu funkcí. 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 opakovat?
Žádosti se budou opakovat nepřetržitě (znovu a znovu), dokud nedosáhnete časového limitu 60 sekund. Pokud dojde k dosažení časového limitu, klient obdrží chybu časového limitu čtení nebo zápisu odpovídajícím způsobem.
Kdy je SSR nejvhodnější?
Opakování na straně serveru (SSR) je nejužitevější v případě, že dojde k náhlému prudkému nárůstu po krátkou dobu kratší než 1 minutu, kdy je možné zabránit chybám omezování. Pokud se pracovní zatížení zvýšilo a zůstal by neustále nad zadaným RU, nebude SSR moc pomoct. Návrhem je odpovídajícím způsobem zvýšit POČET RU.
Navrhovaná nastavení na straně klienta?
Po povolení SSR by klientská aplikace měla zvýšit časový limit čtení nad rámec nastavení opakování 60sekundového serveru. Doporučujeme, abyste byli na bezpečnější straně 90 sekund.
Ukázkový ovladač kódu 3
SocketOptions socketOptions = new SocketOptions()
.setReadTimeoutMillis(90000);
Ukázkový ovladač kódu 4
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ě zkouší na straně serveru, můžete zobrazit v podokně Metriky služby Azure Cosmos DB. Tyto chyby nejdou do klienta, když je povoleno 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í odhadDelayFromRateLimitingInMilliseconds.
Bude opakování na straně serveru mít vliv na úroveň konzistence?
Opakování na straně serveru nemá vliv na úrovně konzistence. Požadavky se budou opakovat na straně serveru, pokud jsou omezené rychlostí (chyba 429).
Má opakování na straně serveru vliv na nějaký typ chyby, kterou může klient obdržet?
Ne, opakování na straně serveru má vliv jenom na chyby omezování rychlosti (429) opakováním jejich opakování na straně serveru. Tato funkce vám brání v zpracování chyb 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: