排查 Cloudflare 1102 错误代码。
此错误表示 Cloudflare Worker 已超出其 CPU 时间限制或内存限制。
Cloudflare Worker 超出了 CPU 时间限制。CPU 时间是执行代码所花费的时间(例如循环、解析 JSON 等)。网络请求(fetching、responding)所花费的时间不计入 CPU 时间。
要识别 CPU 密集型代码:
- 在本地使用 DevTools 进行 CPU 分析,以识别开销较大的操作。
- 查看 Workers Logs——CPU 时间会显示在调用日志中。这有助于发现特定路由或请求是否消耗了较高的 CPU 时间。
请联系你的 Workers 代码开发者,优化代码以降低 CPU 使用量。常见优化策略包括:
- 减少循环中的迭代次数
- 优化 JSON 解析操作
- 缓存计算结果
- 将大型操作拆分为更小的块
你也可以在 Workers Paid 计划上将 CPU 时间限制 提高到最长 5 分钟,以处理 CPU 密集型任务。
Cloudflare Worker 超出了 128 MB 内存限制。这是按 isolate 的限制,一个 isolate 可能同时处理多个请求。
要识别内存问题:
- 在本地使用 DevTools 进行内存分析,获取内存快照并识别泄漏。
- 留意可能较大的 body 缓冲(请求或响应)、存储在全局作用域中的大对象,或在数组中累积数据等模式。
为避免超出内存限制:
- 避免在内存中缓冲大型对象或响应
- 使用流式 API,例如
TransformStream或node:stream,在不缓冲的情况下处理数据 - 避免在全局作用域中存储大型对象
- 谨慎使用会累积数据的操作(例如反复追加字符串或数组)