Skip to content

Profiling 合同

稳定的 profiling payload 和配置合同在源码目录 contracts/profiling 下。

修改 collector payload、backend ingestion 或 UI 解释逻辑时,以这些文件为准:

如果合同改动影响 scope、retention、collection、storage 或用户可见行为,需要同步更新 requirements、operations guides 和 real profiling acceptance standard。

当前 UI 查询合同

Web UI 当前消费 /api/ui/v1 下的 product-shaped backend routes:

  • /flamegraph:flamegraph tree、partial metadata 和 profile value semantics。
  • /top-stacks:Top Table 工作流使用的 Self/Total ranked rows。
  • /allocation-summaryjava_allocation_bytes 的 sampled allocation summary,包含 requested/effective scope、coverage、top allocating paths、top self allocating frames、insights、limitations、partial reasons 和 empty-state reason。
  • /service-summary/service-selectors:service 和 target selectors。
  • /target-status:JVM eligibility 和 collection status evidence。
  • /ingestion:aggregate profile batch acceptance、retry、rejection、drop 和 truncation evidence。
  • /jvm-events/thread-diagnosis/deadlocks:GC、thread 和 deadlock diagnosis evidence。

空 profile 状态是用户可见合同的一部分。UI 会区分 disabled profiling、expired temporary windows、unmatched targets、ingestion gaps、query errors,以及 selected range 内没有 samples。这些状态帮助诊断,但不能替代 strict acceptance 对 CPU、Wall Clock、allocation、I/O 和 lock 非空 profile data 的要求。

面向 Kubernetes Java 服务。HotSpot 优先。async-profiler 优先。