← Cloudflare Durable Objects / durable-objects / observability
Řešení potíží
Ladění
wrangler dev a wrangler tail jsou vám oba k dispozici, abyste mohli ladit své Durable Objects.
wrangler tail zobrazuje živý přehled logů konzole a výjimek pro každý požadavek obsloužený vaším kódem Worker, včetně běžných požadavků Worker i požadavků Durable Object. Po spuštění npx wrangler deploy, můžete použít wrangler tail v kořenovém adresáři projektu Workeru a navštivte URL adresu Workeru, abyste v terminálu viděli konzolové a chybové protokoly.
Časté chyby
Nebyly registrovány žádné obslužné rutiny událostí. Tento skript nedělá nic.
V souboru Wrangler se ujistěte, že dir a main položky odkazují na správný soubor obsahující kód vašeho Worker a že přípona souboru je .mjs místo .js při použití syntaxe modulů ES.
Nelze použít --delete-class migraci na třídu.
Při odstraňování migrace pomocí npx wrangler deploy --delete-class <ClassName>, se můžete setkat s touto chybou: "Cannot apply --delete-class migration to class <ClassName> without also removing the binding that references it". Měli byste odstranit odpovídající binding v [durable_objects] v Konfigurační soubor Wrangler před pokusem o použití --delete-class znovu.
Durable Object je přetížený.
Jedna instance Durable Object nemůže odvést více práce, než je možné v rámci jednoho vlákna. Následující chyby znamenají, že Durable Object má na zpracování příchozích požadavků příliš mnoho práce:
Error: Durable Object is overloaded. Too many requests queued.Celkový počet požadavků ve frontě je příliš vysoký.Error: Durable Object is overloaded. Too much data queued.Celková velikost dat v požadavcích ve frontě je příliš velká.Error: Durable Object is overloaded. Requests queued for too long.Nejstarší požadavek je ve frontě příliš dlouho.Error: Durable Object is overloaded. Too many requests for the same object within a 10 second window.Počet požadavků na Durable Object je příliš vysoký v krátkém časovém úseku (10 sekund). Tato chyba značí extrémnější úroveň přetížení.
Tuto chybu můžete vyřešit tak, že u jednoho požadavku uděláte méně práce, nebo že budete posílat méně požadavků. Můžete například rozdělit požadavky mezi více instancí Durable Object.
Tyto a další chyby způsobené přetížením budou mít .overloaded vlastnost nastavenou u svých výjimek, kterou lze použít k tomu, aby se přetížené operace neopakovaly.
Váš účet generuje příliš velkou zátěž na Durable Objects. Omezte prosím zátěž a zkuste to znovu později.
Existuje limit na to, jak rychle můžete vytvářet nové stuby pro nové nebo existující Durable Objects. Tato vyhledávání se obvykle ukládají do mezipaměti, takže pokusy o stejnou sadu nedávno použitých Durable Objects by měly být úspěšné, a proto je bezpečné tuto chybu zachytit a po krátké prodlevě to zkusit znovu. Pokud je to možné, zvažte také rozložení těchto vyhledávání do více požadavků.
Durable Object byl resetován, protože byl aktualizován jeho kód.
Slovo reset v chybových zprávách odkazuje na stav v paměti. Jakýkoli trvalý stav, který již byl úspěšně persistován pomocí state.storage není ovlivněn.
Viz Globální jedinečnost.
Operace úložiště Durable Object překročila časový limit, což způsobilo reset objektu.
Aby nedocházelo k neomezenému blokování, existuje limit na to, jak dlouho mohou operace s úložištěm trvat. U Durable Objects s dostatečně velkým počtem párů klíč-hodnota deleteAll() může tento časový limit překročit a selhat. V takovém případě mějte na paměti, že každý deleteAll() volání skutečně postupuje vpřed a že je bezpečné jej opakovat, dokud neuspěje. V opačném případě kontaktujte podpora Cloudflare.
Váš účet provádí příliš mnoho souběžných operací s úložištěm. Omezte prosím zátěž a zkuste to znovu později.
Kromě doporučeného postupu se zpožděním zvažte také úpravu kódu tak, aby využíval state.storage.get(keys Array<string>) namísto několika jednotlivých state.storage.get(key) volání, kdekoli je to možné.