跳转到内容
搜索文档

指标与分析

最后更新 查看 MarkdownAgent 设置

Durable Objects 公开 Durable Object namespace 级和请求级指标的分析。

Cloudflare 仪表板 图表中显示的指标从 Cloudflare 的 GraphQL Analytics API 查询。您可以通过 GraphQL 以编程方式访问指标 或使用 HTTP 客户端。

查看指标与分析

Durable Objects 的按 namespace 分析可在 Cloudflare 仪表板中查看。要查看 namespace 的当前和历史指标:

  1. 在 Cloudflare 仪表板中,进入 Durable Objects 页面。

    Go to Durable Objects ↗
  2. 查看账户级 Durable Objects 使用情况。

  3. 选择现有的 Durable Object namespace。

  4. 选择 Metrics(指标) 选项卡。

您可以选择查询的时间窗口。默认为最近 24 小时。

您还可以通过输入 ID名称 并选择匹配项,将图表过滤到单个 Durable Object。清除过滤器以返回 namespace 级指标。

内存使用

Metrics(指标) 选项卡上的 Memory usage(内存使用) 图表显示 V8 isolate 内存使用量,在 Durable Objects 活动时定期采样,按 P50、P90、P99 和 P999 百分位数细分。每个 isolate 受 128 MB 内存限制 约束。

此内存保存对象累积的内存状态——如类属性、缓存和活动 WebSocket 连接——在对象被休眠或驱逐之前跨请求持久化。此状态在驱逐、休眠或崩溃后不会保留,因此请将任何重要数据持久化到存储

图表显示的内容取决于是否过滤:

  • 无过滤(namespace 视图): 百分位数在 namespace 中每个 Durable Object 的定期内存样本中计算,显示 namespace 中 isolate 内存的分布。
  • ID名称 过滤: 百分位数仅从该 Durable Object 报告的定期样本计算。每个样本仍是托管它的整个 isolate 的内存——可能包括共享该 isolate 的其他 Durable Objects——因此这不是该单个对象独立内存的测量。

内存使用由 durableObjectsPeriodicGroups GraphQL 数据集提供支持,该数据集公开 memoryUsageBytes 指标。百分位值可作为 quantiles.memoryUsageBytesP50quantiles.memoryUsageBytesP999 获取,单位为字节。

如果您看到内存使用随时间持续上升,这可能表示内存泄漏。使用 DevTools 内存分析 在本地获取堆快照并识别导致高内存消耗的具体对象。

查看日志

您可以从 Cloudflare 仪表板查看 Durable Object 日志。日志按脚本名称和 Durable Object 类名称聚合。

要开始 Durable Object 日志记录:

  1. 在定义 Durable Object 类的 Worker 的 Wrangler 配置文件中启用 Durable Object 日志记录:

    {
        "observability": {
            "enabled": true
        }
    }
    [observability]
    enabled = true
  2. 部署带有更新绑定的 Worker 最新版本。

  3. 进入 Durable Objects 页面。

    Go to Durable Objects ↗
  4. 选择现有的 Durable Object namespace。

  5. 选择 Logs(日志) 选项卡。

通过 GraphQL API 查询

Durable Object 指标由 GraphQL 提供支持。

包含 Durable Object 指标的数据集包括:

  • durableObjectsInvocationsAdaptiveGroups
  • durableObjectsPeriodicGroups
  • durableObjectsStorageGroups
  • durableObjectsSubrequestsAdaptiveGroups

使用 GraphQL Introspection 获取每个数据集公开字段的信息。

WebSocket 指标

使用 WebSocket 的 Durable Objects 会在多个 GraphQL 数据集中看到请求指标,因为 WebSocket 有不同类型的请求。

  • WebSocket 连接本身的指标在连接关闭时在 durableObjectsInvocationsAdaptiveGroups 中表示。由于 WebSocket 连接是长连接的,连接通常直到 Durable Object 终止才结束。
  • WebSocket 连接上传入和传出 WebSocket 消息的指标可在 durableObjectsPeriodicGroups 中获取。如果 WebSocket 连接使用 WebSocket Hibernation,传入 WebSocket 消息则在 durableObjectsInvocationsAdaptiveGroups 中表示。

Durable Objects 的 GraphQL 查询示例

  viewer {
    /*
    Replace with your account tag, the 32 hex character id visible at the beginning of any url
    when logged in to dash.cloudflare.com or under "Account ID" on the sidebar of the Workers & Pages Overview
    */
    accounts(filter: {accountTag: "your account tag here"}) {
      // Replace dates with a recent date
      durableObjectsInvocationsAdaptiveGroups(filter: {date_gt: "2023-05-23"}, limit: 1000) {
        sum {
          // Any other fields found through introspection can be added here
          requests
          responseBodySize
        }
      }
      durableObjectsPeriodicGroups(filter: {date_gt: "2023-05-23"}, limit: 1000) {
        sum {
          cpuTime
        }
      }
      durableObjectsStorageGroups(filter: {date_gt: "2023-05-23"}, limit: 1000) {
        max {
          storedBytes
        }
      }
    }
  }

有关身份验证以及了解更多关于查询 Workers 数据集的信息,请参阅 使用 GraphQL 查询 Workers 指标 教程。

其他资源

常见问题

如何识别哪个 Durable Object 实例生成了日志条目?

你可以使用 $workers.durableObjectId 来识别生成日志条目的特定 Durable Object 实例。

这篇文档对您有帮助吗?