INTEGRITY Документация

Лимиты

Лимиты тарифного плана аккаунта

Возможность Workers Free Workers Paid
Запросы 100,000/день Без ограничений
Процессорное время 10 мс 5 min
Память 128 MB 128 MB
Подзапросы 50/запрос 10,000/запрос
Одновременные исходящие
подключений/запрос
6 6
Переменные окружения 64/Worker 128/Worker
Переменная окружения
размер
5 KB 5 KB
Размер Worker 3 MB 10 MB
Время запуска Worker 1 секунда 1 секунда
Количество Workers1 100 500
Количество Cron Triggers
на один аккаунт
5 250
Количество Static Asset файлов на версию Worker 20,000 100,000
Отдельный Static Asset размер файла 25 MiB 25 MiB

1 Если вы достигли этого лимита, рассмотрите использование Workers for Platforms.


Лимиты запросов и ответов

Лимит Значение
Размер URL 16 KB
Размер заголовка запроса 128 KB (всего)
Размер заголовка ответа 128 KB (всего)
Размер тела ответа Принудительное ограничение отсутствует

Лимиты размера тела запроса зависят от плана вашего аккаунта Cloudflare, а не от плана Workers. Запросы, превышающие эти лимиты, возвращают 413 Request entity too large ошибка.

Тариф Cloudflare Максимальный размер тела запроса
Free 100 МБ
Pro 100 МБ
Business 200 МБ
Enterprise 500 MB (по умолчанию)

Клиенты Enterprise могут обратиться к своей команде по работе с аккаунтом или Служба поддержки Cloudflare для увеличения лимита размера тела запроса.

Cloudflare не ограничивает размер тела ответа. Ограничения кеша CDN применяются: 512 МБ для планов Free, Pro и Business, и 5 ГБ для Enterprise.


Процессорное время

Время CPU измеряет, сколько времени CPU тратит на выполнение кода вашего Worker. Ожидание сетевых запросов (например, fetch() вызовы, чтение из KV или запросы к базе данных) не не учитываются во времени CPU.

Лимит Workers Free Workers Paid
Время CPU на HTTP-запрос 10 мс 5 min (по умолчанию: 30 секунд)
Время CPU на Cron Trigger 10 мс 30 секунд (интервал < 1 часа)
15 мин (интервал >= 1 часа)

Большинство Workers потребляют очень мало процессорного времени. В среднем Worker расходует около 2.2 мс на запрос. Более тяжелые нагрузки, связанные с аутентификацией, серверным рендерингом или разбором больших объемов данных, обычно занимают 10-20 мс.

Каждый изолят обладает встроенной гибкостью для случаев, когда ваш Worker изредка превышает установленный лимит. Если Worker начинает регулярно достигать лимита, его выполнение будет прервано в соответствии с установленным лимитом.

Ошибка: превышен лимит времени CPU

Когда Worker превышает лимит времени CPU, Cloudflare возвращает Ошибка 1102 клиенту с сообщением Worker exceeded resource limits. В дашборде это отображается как Exceeded CPU Time Limits в разделе Метрики > Ошибки > Статусы вызовов. В Analytics и Logpush результат вызова обозначается как exceededCpu.

Чтобы устранить ошибку превышения лимита процессорного времени:

  1. Увеличьте лимит CPU-времени : на платном плане Workers Paid можно увеличить лимит по умолчанию с 30 секунд до 5 минут (300,000 мс). Это настраивается в конфигурации Wrangler или в дашборде.
  2. Оптимизируйте свой код : используйте Профилирование CPU в DevTools чтобы выявить участки кода с высокой нагрузкой на CPU.
  3. Вынос задач за пределы запроса : перенесите ресурсоёмкие вычисления в Durable Objects или обрабатывать данные меньшими порциями в нескольких запросах.

Увеличение лимита CPU-времени

На плане Workers Paid можно увеличить максимальное время CPU с 30 секунд по умолчанию до 5 минут (300,000 ms).

{
	// ...rest of your configuration...
	"limits": {
		"cpu_ms": 300000, // default is 30000 (30 seconds)
	},
	// ...rest of your configuration...
}
[limits]
cpu_ms = 300_000

Это также можно изменить в панели управления: перейдите в Workers & Pages > выберите Worker > Настройки > настройте лимит времени CPU.

Мониторинг использования CPU


Память

Лимит Значение
Память на изолят 128 MB

Каждый изолят может потреблять до 128 МБ памяти, включая кучу JavaScript и WebAssembly выделений памяти. Этот лимит действует на изолят, а не на вызов. Один изолят может обрабатывать множество параллельных запросов.

Когда изолят превышает 128 МБ, среда выполнения Workers дает завершиться уже выполняющимся запросам и создает новый изолят для последующих запросов. При экстремально высокой нагрузке среда выполнения может отменять часть входящих запросов для сохранения стабильности.

Ошибка: превышен лимит памяти

Когда Worker превышает лимит памяти, Cloudflare возвращает Ошибка 1102 клиенту с сообщением Worker exceeded resource limits. В дашборде это отображается как Exceeded Memory в разделе Метрики > Ошибки > Статусы вызовов. В Analytics и Logpush результат вызова обозначается как exceededMemory.

Вы также можете увидеть ошибку выполнения Memory limit would be exceeded before EOF при попытке буферизовать тело ответа, превышающее лимит.

Чтобы устранить ошибку превышения лимита памяти:

  1. Потоковая передача тела запроса и ответа : используйте TransformStream или node:stream вместо буферизации всей полезной нагрузки в памяти.
  2. Избегайте больших объектов в памяти : храните большие объёмы данных в KV, R2, или D1 вместо хранения в памяти Worker.
  3. Профилирование использования памяти : используйте профилирование памяти с помощью DevTools локально, чтобы найти утечки и участки с большим потреблением памяти.

Чтобы просмотреть ошибки памяти в дашборде:

  1. Перейдите в Workers & Pages.

    Перейдите в Workers & Pages ↗
  2. Выберите Worker, который хотите изучить.

  3. В разделе Метрики, выберите Ошибки > Статусы вызовов и изучить Превышен лимит памяти.


Длительность

Duration измеряет фактическое время (wall-clock time) от начала до конца вызова Worker.

Тип триггера Лимит длительности
HTTP-запрос Без ограничений
Cron Trigger 15 мин
Durable Object Alarm 15 мин
Потребитель Queue 15 мин

Жёсткого ограничения по длительности для Workers, запускаемых по HTTP, не существует. Пока клиент остаётся подключённым, Worker может продолжать обработку, выполнять подзапросы и передавать тело ответа потоком. Когда клиент отключается или ответ завершён, задачи, связанные с этим запросом, могут быть отменены. Используйте ctx.waitUntil() чтобы выполнить работу после отправки ответа. waitUntil() может продлевать выполнение до 30 секунд после отправки ответа или отключения клиента.


Запросы в день

Workers автоматически масштабируются по всей глобальной сети Cloudflare. Общего ограничения на количество запросов в секунду не существует.

Аккаунты на тарифе Workers Free имеют дневной лимит в 100,000 запросов, который сбрасывается в полночь UTC. Когда Worker превышает этот лимит, Cloudflare возвращает Ошибка 1027.

Режим маршрутизации Поведение
Разрешать при сбое Обходит Worker. Запросы обрабатываются так, как будто Worker не настроен.
Блокировать при сбое Возвращает Cloudflare 1027 страница ошибки. Используйте её для критически важных с точки зрения безопасности Workers.

Режим отказа можно настроить, переключив соответствующий маршрут.


Подзапросы

Subrequest представляет собой любой запрос, который Worker отправляет с помощью Fetch API или к сервисам Cloudflare, таким как R2, KV, или D1.

Лимит Workers Free Workers Paid
Подзапросы на один вызов 50 10,000 (до 10M)
Подзапросы к внутренним сервисам 1,000 Соответствует настроенному лимиту (по умолчанию 10 000)

Каждый подзапрос в цепочке перенаправлений учитывается в этом лимите. Общее количество подзапросов может превышать количество fetch() вызовов в вашем коде. Изменить лимит подзапросов для Worker можно с помощью limits конфигурация в конфигурационном файле Wrangler.

Фиксированного лимита времени для отдельных подзапросов не установлено. Пока клиент остаётся подключённым, Worker может продолжать выполнять подзапросы. Когда клиент отключается или ответ завершён, незавершённая работа может быть отменена, если только она не передана в ctx.waitUntil(), что позволяет продлить выполнение до 30 секунд.

Подзапросы Worker к Worker

Используйте Service Bindings чтобы отправлять запросы от одного Worker к другому в пределах вашего аккаунта, не выходя в интернет.

Использование глобального fetch() чтобы вызвать другой Worker в том же зона без привязок служб завершается ошибкой. Workers принимают запросы, отправленные на Custom Domain.


Одновременные открытые соединения

При каждом вызове Worker может быть до шести соединений, одновременно ожидающих заголовки ответа. Следующие вызовы API учитываются в этом лимите, пока устанавливается исходное соединение и сервер ещё не ответил:

Исходящие WebSocket соединения также учитываются в этом лимите.

Как только для соединения приходят заголовки ответа, оно больше не учитывается в лимите шести соединений. Это означает, что Worker может одновременно держать открытыми много соединений, если не более шести из них одновременно находятся в начальной фазе «ожидания заголовков». Если предпринимается попытка седьмого соединения, пока шесть уже ожидают заголовков, оно ставится в очередь, пока одно из существующих соединений не получит заголовки ответа.

Если вы используете fetch() но тело ответа вам не нужно, вызов response.body.cancel() по-прежнему является хорошей практикой для освобождения памяти:

src/index.js
const response = await fetch(url);

// Only read the response body for successful responses
if (response.status <= 299) {
	// Call response.json(), response.text() or otherwise process the body
} else {
	// Explicitly cancel it
	response.body.cancel();
}
src/index.ts
const response = await fetch(url);

// Only read the response body for successful responses
if (response.status <= 299) {
	// Call response.json(), response.text() or otherwise process the body
} else {
	// Explicitly cancel it
	response.body.cancel();
}

Переменные окружения

Лимит Workers Free Workers Paid
Переменные на Worker (секреты + текстовые) 64 128
Размер переменной 5 KB 5 KB
Переменные на аккаунт Без ограничений Без ограничений

Размер Worker

Лимит Workers Free Workers Paid
После сжатия (gzip) 3 MB 10 MB
До сжатия 64 MB 64 MB

Большие сборки Worker могут увеличивать время запуска. Чтобы проверить размер сжатой сборки:

wrangler deploy --outdir bundled/ --dry-run
# Output will resemble the below:
Total Upload: 259.61 KiB / gzip: 47.23 KiB

Чтобы уменьшить размер Worker:


Время запуска Worker

Лимит Значение
Время запуска 1 секунда

Worker должен разобрать и выполнить свою глобальную область видимости (код верхнего уровня вне обработчиков) в течение 1 секунды. Более крупные бандлы и затратный по времени код инициализации в глобальной области увеличивают время запуска.

Если платформа отклоняет развёртывание из-за превышения Worker лимита времени запуска, проверка возвращает ошибку Script startup exceeded CPU time limit (код ошибки 10021). Wrangler автоматически создаёт CPU-профиль, который можно импортировать в Chrome DevTools или открыть в VS Code. См. wrangler check startup для дополнительных сведений.

Чтобы измерить время запуска, выполните npx wrangler@latest deploy или npx wrangler@latest versions upload. Wrangler сообщает startup_time_ms в выводе.

Чтобы сократить время запуска, избегайте ресурсоёмких операций в глобальной области видимости. Перенесите логику инициализации в обработчик или на этап сборки. Например, генерация или обработка большой схемы на верхнем уровне часто становится причиной превышения этого лимита.


Количество Workers

Лимит Workers Free Workers Paid
Workers на один аккаунт 100 500

Если вам нужно больше 500 Workers, рассмотрите использование Workers for Platforms.


Маршруты и домены

Лимит Значение
Маршруты на зону 1,000
Маршрутов на зону (wrangler dev --remote) 50
Пользовательские домены на зону 100
Маршрутизируемые зоны на один Worker 1,000

Маршруты с wrangler dev --remote

Когда вы запускаете удаленная разработка сессию с помощью --remote флаг, Cloudflare устанавливает ограничение в 50 маршрутов на зону. Quick Editor в панели управления Cloudflare также использует wrangler dev --remote, поэтому действует то же ограничение.

Если в вашей зоне больше 50 маршрутов, вы не сможете запустить удалённую сессию, пока не удалите часть маршрутов и не уложитесь в лимит.

Если вам нужно больше 1,000 маршрутов или 1,000 зон с маршрутизацией на один Worker, рассмотрите использование Workers for Platforms. Если вам нужно больше 100 пользовательских доменов на зону, рассмотрите использование wildcard маршрут.


Лимиты Cache API

Возможность Workers Free Workers Paid
Максимальный размер объекта 512 MB 512 MB
Вызовы на запрос 50 1,000

Вызовы на запрос означают количество put(), match(), или delete() вызовов Cache API на запрос. Эта квота общая с подзапросами (fetch()).


Размер лога

Лимит Значение
Данные лога на запрос 256 KB

Этот лимит распространяется на все данные, отправляемые через console.log() инструкции, исключения, метаданные запроса и заголовки для одного запроса. После превышения этого лимита система не записывает дополнительный контекст для этого запроса в логах, tail logs или Tail Workers.

См. документация Workers Trace Event Logpush с ограничениями на поля, отправляемые в места назначения Logpush.


Image Resizing с Workers

См. Документация Image Resizing с ограничениями, которые действуют при использовании Image Resizing с Workers.


Static Assets

Лимит Workers Free Workers Paid
Файлов на версию Worker 20,000 100,000
Размер отдельного файла 25 MiB 25 MiB
_headers правила 100 100
_headers символов на строку 2,000 2,000
_redirects статические перенаправления 2,000 2,000
_redirects динамические перенаправления 100 100
_redirects всего 2,100 2,100
_redirects символов на правило 1,000 1,000

Лимиты планов Unbound и Bundled

Если ваш Worker находится на плане Unbound, лимиты совпадают с планом Workers Paid.

Если ваш Worker находится на плане Bundled, лимиты совпадают с планом Workers Paid, за следующими исключениями:

Возможность Лимит тарифа Bundled
Подзапросы 50/запрос
Время CPU (HTTP-запросы) 50 ms
Время CPU (Cron Triggers) 50 ms
Вызовы Cache API на запрос 50

Workers на тарифе Bundled не имеют ограничений по длительности для Cron Triggers, Durable Object Alarms, или Потребители Queue.


Лимиты астрономического времени по типу вызова

Астрономическое время (также называемое wall-clock time) обозначает общее время, прошедшее от начала до конца вызова, включая время ожидания сетевых запросов, операций ввода-вывода и других асинхронных операций. Это отличается от Процессорное время, который измеряет только время, которое CPU активно тратит на выполнение вашего кода.

В следующей таблице приведены ограничения по фактическому времени выполнения для разных типов вызовов Worker на платформе для разработчиков:

Тип вызова Лимит астрономического времени Подробности
Входящий HTTP-запрос Без ограничений Жёсткое ограничение отсутствует, пока клиент остаётся подключённым. Worker, который продолжает передавать тело ответа потоком, остаётся активным. waitUntil() продлевает выполнение до 30 секунд после ответа или отключения.
Cron Triggers 15 минут Для запланированных Workers максимальное время выполнения составляет 15 минут на один вызов.
Потребители Queue 15 минут Максимальное время выполнения каждого вызова потребителя составляет 15 минут.
Обработчики alarm Durable Object 15 минут Вызовы alarm handler выполняются не более 15 минут.
Durable Objects (RPC / HTTP) Без ограничений Жёсткое ограничение отсутствует, пока вызывающая сторона остаётся подключённой к Durable Object. Durable Object остаётся активным, пока выполняется запрос, RPC-вызов, передача ответа, соединение WebSocket или ожидающая операция ввода-вывода.
Workflows (за шаг) Без ограничений Каждый шаг может выполняться неограниченное время. На отдельные шаги распространяется настроенный Лимит времени CPU.