← Cloudflare Durable Objects / durable-objects / observability
Устранение неполадок
Отладка
wrangler dev и wrangler tail доступны и помогают отлаживать ваши Durable Objects.
wrangler tail отображает поток логов консоли и исключений в реальном времени для каждого запроса, обработанного кодом Worker, включая как обычные запросы Worker, так и запросы Durable Object. После запуска npx wrangler deploy, вы можете использовать wrangler tail в корневом каталоге проекта Worker и перейдите по URL-адресу Worker, чтобы увидеть журналы консоли и ошибок в терминале.
Распространённые ошибки
Обработчики событий не зарегистрированы. Этот скрипт ничего не делает.
В файле Wrangler убедитесь, что dir и main записи указывают на правильный файл с кодом Worker и что расширение файла .mjs вместо .js, если используется синтаксис ES-модулей.
Невозможно применить --delete-class миграцию к классу.
При удалении миграции с помощью npx wrangler deploy --delete-class <ClassName>, вы можете столкнуться со следующей ошибкой: "Cannot apply --delete-class migration to class <ClassName> without also removing the binding that references it". Соответствующую привязку следует удалить из [durable_objects] в конфигурационный файл Wrangler перед попыткой применить --delete-class снова.
Durable Object перегружен.
Один экземпляр Durable Object не может выполнить больше работы, чем позволяет один поток. Эти ошибки означают, что у Durable Object слишком много работы, чтобы успевать обрабатывать входящие запросы:
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.Количество запросов к Durable Object слишком велико за короткий промежуток времени (10 секунд). Эта ошибка указывает на более серьёзный уровень перегрузки.
Чтобы устранить эту ошибку, уменьшите объём работы на один запрос или сократите число запросов. Например, можно распределить запросы между большим числом экземпляров Durable Object.
У этой и других ошибок, вызванных перегрузкой, будет .overloaded свойство устанавливаемое для их исключений и позволяющее избегать повторов перегруженных операций.
Ваш аккаунт создает слишком высокую нагрузку на Durable Objects. Снизьте частоту запросов и повторите попытку позже.
Существует ограничение на то, как быстро можно создавать новые заглушки для новых или существующих Durable Object. Такие обращения обычно кешируются, а значит попытки для одного и того же набора недавно использованных Durable Object, как правило, завершаются успешно. Поэтому перехватывать эту ошибку и повторять попытку после небольшой паузы безопасно. По возможности также стоит распределить такие обращения между несколькими запросами.
Durable Object был сброшен, так как его код был обновлён.
Reset в сообщениях об ошибках означает состояние в памяти. Любое устойчивое состояние, которое уже было успешно сохранено с помощью state.storage не затрагивается.
Операция хранения Durable Object превысила тайм-аут, из-за чего объект был сброшен.
Чтобы избежать бесконечной блокировки, установлено ограничение на время выполнения операций с хранилищем. В Durable Objects с достаточно большим числом пар «ключ-значение» deleteAll() может достичь этого ограничения по времени и завершиться ошибкой. В этом случае учтите, что каждый deleteAll() вызов действительно продвигается и что его можно безопасно повторять до успешного выполнения. В противном случае обратитесь в Поддержка Cloudflare.
Ваш аккаунт выполняет слишком много одновременных операций с хранилищем. Снизьте частоту запросов и повторите попытку позже.
Помимо рекомендованного отката с задержкой рассмотрите также изменение кода для использования state.storage.get(keys Array<string>) а не несколько отдельных state.storage.get(key) вызовы, где это возможно.