在任意时刻,有两个图形化信息源可用于了解 Workers 流量:Workers 指标和基于 zone 的 Workers 分析。
Workers 指标通过显示 Workers 的性能和使用情况,帮助您诊断问题并了解 Workloads。如果您的 Worker 运行在 zone 的路由上或几个 zone 上,Workers 指标将显示 Worker 在每个 zone 上处理的流量以及站点收到的请求数。
Zone 分析显示分配给 zone 的所有 Workers 处理的流量。
Workers 指标汇总单个 Worker 的请求数据(如果您的 Worker 跨多个域运行,并在 *.workers.dev 上运行,指标将汇总这些请求)。要查看 Worker 的指标:
-
在 Cloudflare 仪表板中,前往 Workers & Pages 页面。
Go to Workers & Pages ↗ -
在 Overview(概览) 中,选择 Worker 以查看其指标。
有两个指标可以帮助您了解 Worker 在特定时刻的健康状况:请求成功和错误指标,以及调用状态。
第一个图表显示 Workers 运行时的历史请求计数,细分为成功请求、错误请求和子请求。
- Total(总计):Worker 注册的所有传入请求。WAF ↗ 或其他安全功能阻止的请求不计入。
- Success(成功):返回 Success 或 Client Disconnected 调用状态的请求。
- Errors(错误):返回 Script Threw Exception、Exceeded Resources 或 Internal Error 调用状态的请求——请参阅调用状态了解错误来源的细分。
对于少于六小时的时间范围,请求流量数据可能在图表显示的最后几分钟出现下降。这并不反映流量下降,而是聚合和指标交付的轻微延迟。
子请求是通过在 Worker 内调用 fetch 触发的请求。抛出未捕获错误的子请求不会被计数。
- Total(总计):通过在 Worker 内调用
fetch触发的所有子请求。 - Cached(已缓存):返回的缓存响应数量。
- Uncached(未缓存):返回的未缓存响应数量。
Wall time 表示
Worker 调用开始到 Workers 运行时确定无需再运行 JavaScript 之间的
经过时间(毫秒)。具体而言,每次执行的挂钟时间图表测量 JavaScript 上下文
保持打开状态的挂钟时间——包括等待 I/O 的时间,以及在 Worker 的
waitUntil() 处理程序中执行的时间。挂钟时间
与 Worker 向客户端发送响应最后一个字节所需的时间不同——如果 waitUntil() 内的任务
在响应发送后仍在运行,挂钟时间可能更高;也可能更低。例如,返回具有
大响应体的响应时,Workers 运行时在某些情况下可以在所有字节
通过并发送之前确定无需再运行 JavaScript,并关闭 JavaScript 上下文。
每次执行的 Wall Time 图表使用蓄水池采样(reservoir sampling) ↗将历史挂钟时间数据细分为相关分位数。了解更多关于解读分位数 ↗的信息。
每次执行的 CPU Time(CPU 时间) 图表使用蓄水池采样 ↗将历史 CPU 时间数据细分为相关分位数。了解更多关于解读分位数 ↗的信息。在某些情况下,较高分位数可能看起来超出 CPU 时间限制 但未产生调用错误,这是因为 Workers 运行时有一种机制,允许低于 CPU 限制的请求结转 CPU 时间。
Duration per request(每次请求时长) 图表显示每次 Worker 调用的历史时长(duration)。数据细分为相关分位数,与 CPU 时间图表类似。了解更多关于解读分位数 ↗的信息。了解 Worker 上的时长在您打算在 Worker 本身上进行大量计算时特别有用。
Memory usage(内存使用) 图表显示 Worker 在每次调用时使用的 V8 isolate 内存量,使用蓄水池采样 ↗细分为 P50、P90、P99 和 P999 百分位数。更多信息请参阅解读分位数 ↗。
Workers 在 V8 isolates 中运行,每个 isolate 有 128 MB 内存限制。单个 isolate 可以处理许多并发请求并在它们之间共享内存。内存使用指标反映每次调用时此共享内存的使用量。
图表上的部署标记让您将内存变化与特定代码部署关联,更容易识别新版本是否引入了内存回归。
如果看到内存使用随时间呈上升趋势,这可能表示内存泄漏。在本地使用 DevTools 内存分析 采集堆快照,识别导致高内存消耗的特定对象。
要查看调用状态:
-
在 Cloudflare 仪表板中,前往 Workers & Pages 页面。
Go to Workers & Pages ↗ -
选择 Worker。
-
在 Metrics(指标) 中找到 Summary(摘要) 图表。
-
选择 Errors(错误)。
Worker 调用状态指示 Worker 是否成功执行,或在 Workers 运行时中未能生成响应。调用状态与 HTTP 状态码 不同。在某些情况下,Worker 调用成功但由于 Workers 运行时之外遇到的另一个错误而未生成成功的 HTTP 状态。某些调用状态会导致向客户端返回 Workers 错误代码。
| 调用状态 | 定义 | Workers 错误代码 | GraphQL 字段 |
|---|---|---|---|
| Success | Worker 成功执行 | success |
|
| Client disconnected | HTTP 客户端(即浏览器)在请求完成前断开连接 | clientDisconnected |
|
| Worker threw exception | Worker 抛出未处理的 JavaScript 异常 | 1101 | scriptThrewException |
| Exceeded resources¹ | Worker 超出运行时限制 | 1102, 1027 | exceededResources |
| Internal error² | Workers 运行时遇到错误 | internalError |
¹ Exceeded Resources 状态可能在 Worker 超出运行时限制 时出现。最常见原因是 CPU 时间过多,也可能是 Worker 超出启动时间或免费套餐限制。
² Internal Error 状态可能在 Workers 运行时因系统内部故障而无法处理请求时出现。这些错误不是由 Worker 代码或任何资源限制引起的。Internal Error 状态的请求很少见,正常操作期间可能出现一些。这些请求不计入计费用量。如果您注意到 Internal Error 状态请求率升高,请查看 www.cloudflarestatus.com ↗。
要进一步调查异常,请使用 wrangler tail。
请求时长图表显示 Worker 响应请求所需的时间,包括代码执行和等待 I/O 的时间。请求时长图表目前仅在 Worker 启用了 Smart Placement 时可用。
与仅测量 Worker 活跃时间的执行时长 不同,请求时长测量从请求进入数据中心到交付响应的时间。
数据显示启用 Smart Placement 的请求与禁用 Smart Placement 的请求(默认情况下,1% 的请求路由时禁用 Smart Placement)的时长对比。图表显示直方图,x 轴为时长,y 轴为落入相应时长的请求百分比。
Worker 指标最多可查看过去三个月,最大增量为一周。
Zone 分析汇总为 zone 定义的任何路由 分配的所有 Workers 的请求数据。
要查看 zone 指标:
在 Cloudflare 仪表板中,前往 zone 的 Workers Analytics(Workers 分析) 页面。
Go to Workers ↗Zone 数据可在过去 30 天内按时间范围筛选。仪表板包含以下图表和信息。
此图表显示子请求——通过在 Worker 内调用 fetch 触发的请求——按缓存状态细分。
- Uncached(未缓存):由源站服务器或直接响应子请求的其他服务器直接应答的请求。
- Cached(已缓存):由 Cloudflare 缓存 ↗ 应答的请求。随着 Cloudflare 缓存更多内容,它会加速内容交付并减少源站负载。
此图表显示 zone 上所有 Workers 的历史带宽使用情况,按缓存状态细分。
此图表显示 zone 上所有 Workers 的历史请求,按 HTTP 状态码细分。
此图表显示 zone 上所有 Workers 的历史数据,按成功请求、失败请求和子请求细分。这些请求类型按 HTTP 状态码分类,其中 200 级请求为成功,400 到 500 级请求为失败。
Worker 指标由 GraphQL 提供支持。在 使用 GraphQL 查询 Workers 指标教程 中了解更多关于查询数据集的信息。
上述指标提供 Worker 性能和运行时行为的洞察。对于自定义的、特定于应用程序的分析,请使用 Workers Analytics Engine。
Analytics Engine 适用于:
- 自定义业务指标 — 跟踪特定于应用程序的事件,如注册、购买或功能使用情况。
- 按客户分析 — 使用客户 ID 或 API 密钥等高基数维度记录数据。
- 按用量计费 — 按客户统计 API 调用、计算单元或其他可计费事件。
- 性能跟踪 — 使用自定义维度测量响应时间、缓存命中率或错误率。
写入 Analytics Engine 是非阻塞的,不会为 Worker 增加延迟。通过 Analytics Engine SQL API 使用 SQL 查询数据,或在 Grafana 中可视化。
请参阅 Analytics Engine 示例 开始使用。