← Cloudflare Workers / workers / platform
Limity
Limity plánu účtu
| Funkce | Workers Free | Workers Paid |
|---|---|---|
| Požadavky | 100,000/den | Bez limitu |
| Čas CPU | 10 ms | 5 min |
| Paměť | 128 MB | 128 MB |
| Podpožadavky | 50/požadavek | 10,000/požadavek |
| Současná odchozí připojení/požadavek |
6 | 6 |
| Proměnné prostředí | 64/Worker | 128/Worker |
| Proměnná prostředí velikost |
5 KB | 5 KB |
| Velikost Workeru | 3 MB | 10 MB |
| Doba spuštění Workeru | 1 sekunda | 1 sekunda |
| Počet Workerů1 | 100 | 500 |
| Počet Cron Triggers na účet |
5 | 250 |
| Počet Static Asset souborů na verzi Workeru | 20,000 | 100,000 |
| Individuální Static Asset velikost souboru | 25 MiB | 25 MiB |
1 Pokud tento limit dosáhnete, zvažte použití Workers for Platforms.
Limity požadavků a odpovědí
| Limit | Hodnota |
|---|---|
| Velikost URL | 16 KB |
| Velikost hlavičky požadavku | 128 KB (celkem) |
| Velikost hlavičky odpovědi | 128 KB (celkem) |
| Velikost těla odpovědi | Žádný vynucený limit |
Limity velikosti těla požadavku závisí na vašem plánu účtu Cloudflare, nikoli na plánu Workers. Požadavky, které tyto limity překročí, vrátí 413 Request entity too large chyba.
| Tarif Cloudflare | Maximální velikost těla požadavku |
|---|---|
| Free | 100 MB |
| Pro | 100 MB |
| Business | 200 MB |
| Enterprise | 500 MB (ve výchozím nastavení) |
Zákazníci s plánem Enterprise mohou kontaktovat svůj tým pro správu účtu nebo Cloudflare Support pro vyšší limit velikosti těla požadavku.
Cloudflare nevynucuje limity velikosti těla odpovědi. Limity mezipaměti CDN platí: 512 MB pro plány Free, Pro a Business a 5 GB pro Enterprise.
Čas CPU
Čas CPU měří, jak dlouho CPU tráví prováděním kódu vašeho Workeru. Čekání na síťové požadavky (například fetch() volání, čtení z KV nebo databázové dotazy) nezajišťuje ne se započítávají do doby CPU.
| Limit | Workers Free | Workers Paid |
|---|---|---|
| Čas CPU na HTTP požadavek | 10 ms | 5 min (výchozí: 30 sekund) |
| Čas CPU na Cron Trigger | 10 ms | 30 sekund (interval < 1 hodina) 15 min (interval >= 1 hodina) |
Většina Workers spotřebuje jen velmi málo CPU času. Průměrný Worker využije přibližně 2.2 ms na požadavek. Náročnější úlohy, jako je autentizace, server-side rendering nebo zpracování velkých payloadů, obvykle spotřebují 10-20 ms.
Každý izolát má určitou vestavěnou flexibilitu pro případy, kdy váš Worker příležitostně překročí nastavený limit. Pokud váš Worker začne limit překračovat trvale, jeho spuštění bude ukončeno podle nastaveného limitu.
Chyba: překročen časový limit CPU
Když Worker překročí limit doby CPU, Cloudflare vrátí Chyba 1102 klientovi se zprávou Worker exceeded resource limits. V dashboardu se to zobrazuje jako Exceeded CPU Time Limits v části Metriky > Chyby > Invocation Statuses. V Analytics a Logpush je výsledek volání exceededCpu.
Chcete-li vyřešit chybu limitu doby CPU:
- Zvyšte limit CPU času : v plánu Workers Paid můžete limit zvýšit z výchozích 30 sekund až na 5 minut (300,000 ms). Nastavte to v konfiguraci Wrangleru nebo na dashboardu.
- Optimalizujte svůj kód : použijte Profilování CPU pomocí DevTools k identifikaci částí kódu náročných na CPU.
- Odložení práce : přesuňte náročné výpočty do Durable Objects nebo zpracovávat data v menších částech napříč více požadavky.
Zvýšení limitu CPU času
V plánu Workers Paid můžete zvýšit maximální dobu CPU z výchozích 30 sekund až na 5 minut (300,000 ms).
{
// ...rest of your configuration...
"limits": {
"cpu_ms": 300000, // default is 30000 (30 seconds)
},
// ...rest of your configuration...
}[limits]
cpu_ms = 300_000Toto můžete také změnit v dashboardu: přejděte na Workers & Pages > vyberte svůj Worker > Nastavení > upravte limit CPU času.
Sledování využití CPU
- Workers Logs : CPU time a wall time se zobrazují v log volání.
- Tail Workers / Logpush : CPU time a wall time se zobrazují na nejvyšší úrovni objekt Workers Trace Events.
- DevTools : použijte Profilování CPU pomocí DevTools lokálně, abyste ve svém kódu identifikovali části náročné na CPU.
Paměť
| Limit | Hodnota |
|---|---|
| Paměť na izolát | 128 MB |
Každý izolát může spotřebovat až 128 MB paměti, včetně haldy JavaScriptu a WebAssembly alokace. Tento limit platí na izolát, nikoli na jedno volání. Jeden izolát dokáže zpracovat mnoho souběžných požadavků.
Když izolát překročí 128 MB, runtime prostředí Workers nechá rozpracované požadavky doběhnout a pro další požadavky vytvoří nový izolát. Při extrémně vysoké zátěži může runtime některé příchozí požadavky zrušit, aby zachoval stabilitu.
Chyba: překročen limit paměti
Když Worker překročí limit paměti, Cloudflare vrátí Chyba 1102 klientovi se zprávou Worker exceeded resource limits. V dashboardu se to zobrazuje jako Exceeded Memory v části Metriky > Chyby > Invocation Statuses. V Analytics a Logpush je výsledek volání exceededMemory.
Také se vám může zobrazit chyba za běhu Memory limit would be exceeded before EOF při pokusu o bufferování těla odpovědi, které přesahuje limit.
Chcete-li vyřešit chybu limitu paměti:
- Streamování těl požadavků a odpovědí : použijte
TransformStreamnebonode:streammísto ukládání celého obsahu do paměti. - Vyhněte se velkým objektům v paměti : ukládejte velká data do KV, R2, nebo D1 místo jejich uchovávání v paměti Workeru.
- Profilování využití paměti : použijte profilování paměti pomocí DevTools lokálně, abyste identifikovali úniky paměti a alokace s vysokou spotřebou paměti.
Chcete-li zobrazit chyby paměti v dashboardu:
-
Přejděte na Workers & Pages.
Přejděte na Workers & Pages ↗ -
Vyberte Worker, který chcete prozkoumat.
-
V části Metriky, vyberte Chyby > Invocation Statuses a prozkoumejte Překročená paměť.
Doba trvání
Duration měří reálný čas od začátku do konce vyvolání Workeru.
| Typ triggeru | Limit délky trvání |
|---|---|
| Požadavek HTTP | Bez limitu |
| Cron Trigger | 15 min |
| Durable Object Alarm | 15 min |
| Queue Consumer | 15 min |
Pro Workers spouštěné přes HTTP neexistuje pevný limit doby trvání. Dokud zůstává klient připojen, může Worker pokračovat ve zpracování, vytváření dílčích požadavků a streamování těla odpovědi. Jakmile se klient odpojí nebo je odpověď dokončena, mohou být úkoly spojené s daným požadavkem zrušeny. Použijte ctx.waitUntil() pro provedení práce po odeslání odpovědi. waitUntil() může prodloužit běh až o 30 sekund po odeslání odpovědi nebo po odpojení klienta.
Denní požadavky
Workers se automaticky škálují v rámci celé globální sítě Cloudflare. Obecný limit počtu požadavků za sekundu neexistuje.
Účty v plánu Workers Free mají denní limit 100,000 požadavků, který se resetuje o půlnoci UTC. Pokud Worker tento limit překročí, Cloudflare vrátí Chyba 1027.
| Režim trasy | Chování |
|---|---|
| Fail open | Obchází Worker. Požadavky se chovají, jako by nebyl nakonfigurován žádný Worker. |
| Fail closed | Vrátí Cloudflare 1027 chybová stránka. Použijte ji pro Workery, u kterých záleží na bezpečnosti. |
Fail mode můžete nakonfigurovat přepnutím odpovídajícího trasa.
Podpožadavky
Subrequest je jakýkoli požadavek, který Worker odešle pomocí Fetch API nebo ke službám Cloudflare, jako je R2, KV, nebo D1.
| Limit | Workers Free | Workers Paid |
|---|---|---|
| Podpožadavky na jedno vyvolání | 50 | 10,000 (až 10M) |
| Podpožadavky na interní služby | 1,000 | Odpovídá nakonfigurovanému limitu (výchozí 10,000) |
Každý subrequest v řetězci přesměrování se počítá do tohoto limitu. Celkový počet subrequestů může přesáhnout počet fetch() volání ve vašem kódu. Limit subrequestů na Worker můžete změnit pomocí limits konfigurace ve vašem konfiguračním souboru Wrangler.
Pro jednotlivé dílčí požadavky není stanoven žádný časový limit. Dokud zůstává klient připojen, může Worker pokračovat ve vytváření dílčích požadavků. Jakmile se klient odpojí nebo je odpověď dokončena, může být nedokončená práce zrušena, pokud nebyla předána ctx.waitUntil(), které mohou prodloužit provádění až o 30 sekund.
Worker-to-Worker subrequesty
Použijte Service Bindings pro odesílání požadavků z jednoho Workeru do druhého v rámci vašeho účtu bez nutnosti procházet internetem.
Použití globálního fetch() pro volání jiného Workeru na stejném zóna bez service bindings selže. Workers přijímají požadavky odeslané na Custom Domain.
Současně otevřená spojení
Každé volání Workeru může mít současně až šest připojení čekajících na hlavičky odpovědi. Do tohoto limitu se počítají následující volání API, dokud probíhá navazování počátečního připojení a server ještě neodpověděl:
fetch()metoda v rámci Fetch APIget(),put(),list(), adelete()metody Objekty jmenného prostoru Workers KVput(),match(), adelete()metody Objekty mezipamětilist(),get(),put(),delete(), ahead()metody R2send()asendBatch()metody Queues- Otevření TCP socketu pomocí
connect()API
Do tohoto limitu se započítávají i odchozí připojení WebSocket.
Jakmile pro dané spojení dorazí hlavičky odpovědi, přestane se počítat do limitu šesti spojení. To znamená, že Worker může mít současně otevřených mnoho spojení, pokud jich není více než šest zároveň ve fázi "waiting for headers". Pokud se pokusí navázat sedmé spojení, zatímco šest již čeká na hlavičky, zařadí se do fronty, dokud jedno z existujících spojení nepřijme své hlavičky odpovědi.
Pokud používáte fetch() ale nepotřebujete tělo odpovědi, volání response.body.cancel() je stále dobrým zvykem uvolnit paměť:
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();
}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();
}Proměnné prostředí
| Limit | Workers Free | Workers Paid |
|---|---|---|
| Proměnné na Worker (tajné klíče + text) | 64 | 128 |
| Velikost proměnné | 5 KB | 5 KB |
| Proměnné na účet | Bez limitu | Bez limitu |
Velikost Workeru
| Limit | Workers Free | Workers Paid |
|---|---|---|
| Po kompresi (gzip) | 3 MB | 10 MB |
| Před kompresí | 64 MB | 64 MB |
Větší balíčky Workeru mohou ovlivnit dobu spuštění. Velikost komprimovaného balíčku zjistíte takto:
wrangler deploy --outdir bundled/ --dry-run# Output will resemble the below:
Total Upload: 259.61 KiB / gzip: 47.23 KiBChcete-li zmenšit velikost Workeru:
- Odeberte nepotřebné závislosti a balíčky.
- Ukládejte konfigurační soubory, statická aktiva a binární data do KV, R2, D1, nebo Workers Static Assets místo jejich sloučení do balíčku.
- Rozdělte funkčnost mezi více Workerů pomocí Service bindings.
Doba spuštění Workeru
| Limit | Hodnota |
|---|---|
| Doba spuštění | 1 sekunda |
Worker musí zpracovat a spustit svůj globální rozsah (kód nejvyšší úrovně mimo handlery) do 1 sekundy. Větší bundly a nákladná inicializace v globálním rozsahu prodlužují dobu spuštění.
Když platforma odmítne nasazení, protože Worker překročí limit doby spuštění, ověření vrátí chybu Script startup exceeded CPU time limit (chybový kód 10021). Wrangler automaticky vygeneruje profil CPU, který můžete importovat do Chrome DevTools nebo otevřít ve VS Code. Viz wrangler check startup pro další podrobnosti.
Chcete-li změřit dobu spuštění, spusťte npx wrangler@latest deploy nebo npx wrangler@latest versions upload. Wrangler hlásí startup_time_ms ve výstupu.
Chcete-li zkrátit dobu spuštění, vyhněte se náročným operacím v globálním rozsahu. Přesuňte inicializační logiku do svého handleru nebo do doby sestavení. Generování nebo zpracování velkého schématu na nejvyšší úrovni je například častou příčinou překročení tohoto limitu.
Počet Workerů
| Limit | Workers Free | Workers Paid |
|---|---|---|
| Workers na účet | 100 | 500 |
Pokud potřebujete více než 500 Workerů, zvažte použití Workers for Platforms.
Trasy a domény
| Limit | Hodnota |
|---|---|
| Trasy na zónu | 1,000 |
Trasy na zónu (wrangler dev --remote) |
50 |
| Vlastní domény na zónu | 100 |
| Směrované zóny na jeden Worker | 1,000 |
Trasy s wrangler dev --remote
Když spustíte vzdálený vývoj relaci pomocí --remote příznak, Cloudflare vynucuje limit 50 tras na zónu. Quick Editor v Cloudflare dashboardu rovněž používá wrangler dev --remote, takže platí stejný limit.
Pokud má vaše zóna více než 50 tras, nemůžete spustit vzdálenou relaci, dokud počet tras nesnížíte pod tento limit.
Pokud potřebujete více než 1,000 tras nebo 1,000 směrovaných zón na Worker, zvažte použití Workers for Platforms. Pokud potřebujete více než 100 vlastních domén na zónu, zvažte použití zástupné trasa.
Limity Cache API
| Funkce | Workers Free | Workers Paid |
|---|---|---|
| Maximální velikost objektu | 512 MB | 512 MB |
| Volání na požadavek | 50 | 1,000 |
Volání na požadavek je počet put(), match(), nebo delete() volání Cache API na požadavek. Tento limit sdílí stejnou kvótu jako subrequesty (fetch()).
Velikost protokolu
| Limit | Hodnota |
|---|---|
| Data protokolu na jeden požadavek | 256 KB |
Tento limit se vztahuje na všechna data odeslaná pomocí console.log() příkazů, výjimek, metadat requestu a hlaviček pro jeden request. Po překročení tohoto limitu systém pro daný request již nezaznamenává další kontext v lozích, tail lozích ani Tail Workers.
Viz Dokumentace Workers Trace Event Logpush pro limity polí odesílaných do cílů Logpush.
Změna velikosti obrázků pomocí Workers
Viz Dokumentace ke změně velikosti obrázků pro limity platné při použití Image Resizing s Workers.
Static Assets
| Limit | Workers Free | Workers Paid |
|---|---|---|
| Soubory na verzi Workeru | 20,000 | 100,000 |
| Velikost jednotlivého souboru | 25 MiB | 25 MiB |
_headers pravidla |
100 | 100 |
_headers znaků na řádek |
2,000 | 2,000 |
_redirects statická přesměrování |
2,000 | 2,000 |
_redirects dynamická přesměrování |
100 | 100 |
_redirects celkem |
2,100 | 2,100 |
_redirects znaků na pravidlo |
1,000 | 1,000 |
Limity plánů Unbound a Bundled
Pokud je váš Worker na plánu Unbound, limity odpovídají plánu Workers Paid.
Pokud je váš Worker na plánu Bundled, limity odpovídají plánu Workers Paid s těmito výjimkami:
| Funkce | Limit plánu Bundled |
|---|---|
| Podpožadavky | 50/požadavek |
| Čas CPU (HTTP požadavky) | 50 ms |
| Čas CPU (Cron Triggers) | 50 ms |
| Volání Cache API na požadavek | 50 |
Workers na plánu Bundled nemají žádné časové limity pro Cron Triggers, Durable Object Alarms, nebo Queue Consumers.
Limity reálného času podle typu vyvolání
Reálný čas (anglicky též "wall-clock time") představuje celkovou dobu od začátku do konce vyvolání, včetně času stráveného čekáním na síťové požadavky, I/O operace a další asynchronní operace. Liší se od Čas CPU, které měří pouze čas, který CPU stráví aktivním prováděním vašeho kódu.
Následující tabulka shrnuje limity reálného času pro různé typy vyvolání Workeru v rámci vývojářské platformy:
| Invocation type | Limit reálného času | Podrobnosti |
|---|---|---|
| Příchozí HTTP požadavek | Neomezeně | Žádný pevný limit, dokud zůstává klient připojen. Worker, který stále streamuje tělo odpovědi, zůstává aktivní. waitUntil() prodlužuje běh až o 30 sekund po odeslání odpovědi nebo odpojení. |
| Cron Triggers | 15 minut | Naplánovaní Workers mají maximální reálný čas běhu 15 minut na jedno vyvolání. |
| Queue consumers | 15 minut | Každé volání consumeru má maximální reálný čas běhu 15 minut. |
| Obslužné rutiny alarmů v Durable Object | 15 minut | Volání alarm handleru mají maximální reálnou dobu běhu (wall time) 15 minut. |
| Durable Objects (RPC / HTTP) | Neomezeně | Žádný pevný limit, dokud zůstává volající připojen k Durable Object. Durable Objects zůstávají aktivní, dokud probíhá požadavek, RPC volání, stream odpovědi, WebSocket nebo čekající I/O operace. |
| Workflows (na krok) | Neomezeně | Každý krok může běžet po neomezenou dobu. Na jednotlivé kroky se vztahuje nakonfigurovaný Limit CPU času. |