跳到主要内容

计时

Aidy 会记录自请求到达 Aidy 起各个环节的处理时间,并输出相关环节的时间相对于请求到达 Aidy 时的毫秒级偏差。

在日志中,计时信息会会作为 timingduration 两个字段输出。

timing 字段

该字段记录各个时间点相对于请求到达 Aidy 时的毫秒级偏移量。

其 name 包括如下内容:

  • start:代表请求到达 Aidy 时的时间点;因该时间点是 Aidy 的计时起点,因此该值始终为 0
  • request-upstream-start:代表开始向上游发起请求的时间点
  • request-upstream-end:代表上游响应结束的时间点
  • request-guard-check-start:代表请求 Guard 检测开始的时间点
  • request-guard-check-end:代表请求 Guard 检测结束的时间点
  • response-guard-check-start:代表响应 Guard 检测开始的时间点
  • response-guard-check-end:代表响应 Guard 检测结束的时间点
  • end: 代表所有与 Aidy 请求/响应处理相关的流程结束的时间点。可以认为该值含义为客户端自发出请求以来多久收到 Aidy 的响应(但在网络阻塞的情况下,实际的响应时间可能更长)
备注
  1. 以上部分时间点和耗时仅在特定条件下存在,请调用方做好任何时间点都可能不存在的兼容处理。
  2. 尽管 timing 字段的结果通常按照时间排序,但调用方不应该依赖此排序。
  3. 在某些情况下(如异步检测),某些时间段可能是交叉的。
  4. end 并不一定是所有流程的最后时间点,在某些情况下(如异步检测)可能存在某些流程的时间点在 end 之后。

duration 字段

该字段记录各个环节的实际耗时(毫秒)。通过配对的 start 和 end 时间点计算得出。

其 key 包括如下内容:

  • all:从请求开始到结束的总耗时
  • request-upstream:向上游发起请求并接收响应的耗时
  • request-guard-check:请求 Guard 检测的耗时
  • response-guard-check:响应 Guard 检测的耗时
备注
  1. all 计算的是 end-start 的差值,因此,该值仅能反应请求的大概处理耗时,对于网络阻塞和异步处理的耗时并未记录
  2. 除了 all 以外的字段是经配对的 xx-end - xx-start 计算得出;对于因异常原因导致某些不完整的环节,不会在 duration 字段中体现
  3. 因某些流程可能存在异步交叉,不可将 duration 中各个字段相加得到总耗时 —— 对于此情形,建议取 timing 中的相关时间点