Expand description
开发模式请求级调用栈耗时采集 (Request Profile)
在 dev 环境下自动采集每个 #[tracing::instrument] 的 self/inclusive 耗时,
支持终端树形输出、热点高亮、JetBrains/Cursor 源码跳转链接。
§功能特性
- Self/Inclusive 耗时: 区分自身耗时和包含子调用的总耗时
- 热点高亮: 自动标记 self 耗时最大的 span
- 源码跳转: JetBrains 过滤器格式 / Cursor/VS Code OSC 8 链接
- Server-Timing: 生成
Server-Timing响应头供前端联调 - JSONL 导出:
DEV_PROFILE_JSONL环境变量控制 JSONL 文件输出
§环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
DEV_PROFILE_MIN_MS | 0.1 | 最小展示阈值 (ms) |
DEV_PROFILE_LINK_SCHEME | 自动检测 | 源码跳转协议 |
DEV_PROFILE_NO_LINKS | - | 禁用源码链接 |
DEV_PROFILE_JSONL | - | JSONL 输出文件路径 |
DEV_SERVER_TIMING | 1 | 是否输出 Server-Timing 头 |
Structs§
- DevProfile
Layer - dev 模式 tracing Layer,自动采集 span 耗时并生成调用栈树 开发模式 span 耗时 Layer
- Profile
Hotspot - 热点 span 摘要(JSONL 用)
- Profile
Report - 单次 HTTP 请求 profile 报告(JSONL 一行)
- Profile
Span Node - 单个 span 节点(JSONL 用)
- Request
Profile - 单个 HTTP 请求内的 span 聚合
Functions§
- append_
jsonl_ report - 将 profile 报告追加到 JSONL 文件(
DEV_PROFILE_JSONL环境变量) - http_
request_ span - 创建 HTTP 根 span
- is_
active - 是否处于请求 profiling 上下文
- min_
show_ duration - 读取最小展示阈值(毫秒),默认 0.1ms
- record_
close - 写入 span 关闭事件(Layer 调用)
- record_
enter - 写入 span 进入事件(Layer 调用)
- scope
- 在请求 profiling 作用域内执行 future
- span_
label - 从 tracing metadata 组装展示名