Durable Objects のデバッグには、wrangler dev と wrangler tail の両方が使えます。
wrangler tail は、通常の Worker リクエストと Durable Object リクエストの両方について、Worker コードが処理した各リクエストのコンソールログと例外ログをライブ表示します。npx wrangler deploy のあと、Worker プロジェクトのルートで wrangler tail を実行し、Worker の URL にアクセスすると、ターミナルにコンソールログとエラーログが表示されます。
Wrangler ファイルで、dir と main が Worker コードを含む正しいファイルを指していることを確認します。ES modules 構文を使う場合は、拡張子を .js ではなく .mjs にしてください。
npx wrangler deploy --delete-class <ClassName> でマイグレーションを削除すると、"Cannot apply --delete-class migration to class <ClassName> without also removing the binding that references it" というエラーになることがあります。--delete-class を再実行する前に、Wrangler 設定ファイル の [durable_objects] から、対応するバインディングを削除してください。
Durable Object の 1 インスタンスが処理できる仕事量は、1 スレッドで可能な範囲に限られます。次のエラーは、着信リクエストに追いつけないほど仕事が多いことを示します。
Error: Durable Object is overloaded. Too many requests queued.キューに入っているリクエストの件数が多すぎます。Error: Durable Object is overloaded. Too much data queued.キューに入っているリクエストのデータ総量が大きすぎます。Error: Durable Object is overloaded. Requests queued for too long.いちばん古いリクエストが、キューに長く留まりすぎています。Error: Durable Object is overloaded. Too many requests for the same object within a 10 second window.短い時間(10 秒)内の、1 つの Durable Object へのリクエスト数が多すぎます。このエラーは、より深刻な過負荷を示します。
このエラーを解消するには、リクエストあたりの仕事を減らすか、送るリクエスト数を減らします。たとえば、より多くの Durable Object インスタンスにリクエストを分散できます。
過負荷が原因のこれらのエラーと、ほかの同様のエラーには、例外に .overloaded プロパティ が付きます。過負荷の操作を再試行しない判断に使えます。
新しい、または既存の Durable Objects 向けに スタブ を作る速度には上限があります。この参照は通常キャッシュされるため、最近アクセスした同じ一連の Durable Objects への再試行は成功しやすく、このエラーを捕捉して短時間待ってから再試行しても問題ありません。可能なら、これらの参照を複数のリクエストに分散することも検討してください。
エラーメッセージの reset は、インメモリ状態を指します。state.storage 経由ですでに正常に永続化した状態は影響を受けません。
Global Uniqueness を参照してください。
無限にブロックしないよう、ストレージ操作にかけられる時間には上限があります。キーと値のペアが十分多い Durable Objects では、deleteAll() がその制限に達して失敗することがあります。この場合、各 deleteAll() 呼び出しは進捗しており、成功するまで再試行しても問題ありません。それでも解決しない場合は Cloudflare サポート に連絡してください。
待機して再試行するほか、可能ならコードを変更し、個別の state.storage.get(key) を繰り返すのではなく state.storage.get(keys Array<string>) を使ってください。