PD TSO wait duration不同面板有差异

【 TiDB 版本】 v5.2.3
grafana监控上pd tso wait duration面板在overview是type='tso’在TIDB是type=‘wait’,两者有和差异?


之前表达式有问题吧,我看 6.0 已经统一成 wait 了

在内部采集这这个指标的2个类型都代表什么意思,另外你截的图上曲线也不是一致的

获取 tso 有以下的流程:

  1. 构建 tso request,这里有个构建时间 req.start
  2. 然后将 request 放进 rpc stream,等待异步执行,这时候有个等待异步执行开始的时间 start := time.Now()

执行结束后计算两个 time:
wait 为: now.Sub(start).Seconds()
tso 为: now.Sub(req.start).Seconds()

所以可以理解为:wait 是等待异步执行的耗时
tso 是请构建请求到收到 tso 的时间

真正执行 tso rpc 耗时是监控面板中,pd tso rpc duration,它是这么计算的:

1. rpc requet 开始前 start := time.Now()
2. rpc 完后 time.Since(start).Seconds()

它才是真正的 rpc request 时间.

因此 tso > wait > rpc tso.

2 个赞

:+1:但是有个问题 我把overview的type改成wait后和 tidb的本身wait的曲线不一致


按道理讲,是不会不一致的,promSQL一致,数据源一致,所以数据一样才对,你在两个页面同时刷新下看看。

刷新过的,改成wait后的变化就是999线从高变成了低


First:把 overview 的 type 改成 wait 后和 tidb 的本身 wait 的曲线不一致
Answer: 从 2 个图像对比看,999 刚好都是 绿色,曲线的走势也基本一致。只是下面的图像在 Y 轴最大值 80ms 的情况下显示看起来没那么明显。对比同一时刻的数值应该是一致的。

Second: Overview 的 type 改成 wait 后,999 线比 99 线还低
Answer:从 Prometheus histograme_quantile 函数的逻辑上看这是不可能的。是不是 99 线和 90 线的 type 还是 tso,这样的话如 ID : jiyf 老师所说 “wait 是等待异步执行的耗时”,就算取到了 999 也是很快的,大概率低于真实执行的 90 线和 99 线。造成了误读的现象。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。