7.5.2 tikv 抖动

背景:
近一个月发现了 tikv 的 leader 有大量的 region miss 导致了稳定性问题,业务比较复杂多种 SQL 混合在一起,给问题排查带来了一定难度

环境:
3pd, 7tidb, 8tikv(单机多实例)

影响:
报错期间有大量的 1062 错误(猜测可能是由于抖动,阻塞了大量的插入,而业务侧产生的 uuid 有重复的情况)
报错期间有一个 tidb 节点的内存比较高,实际看日志没有发现单独的大 SQL 语句,实际看到的情况也确实抖动期间 SQL 阻塞。

监控:




做过的操作

  1. 升级 tidb 版本从 5.4.2 升级到 7.5.2
  2. 硬件升级 tikv ,磨平了所有 kv 层的硬件差异
  3. tidb_allow_tiflash_cop off → on (感觉关系不大)
  4. 修改了 performance.enforce-mpp: false → true (感觉关系不大)

疑问:我理解 leader 迁移是 tikv 所在主机的评分较低或心跳,主机一直为存活状态所以排除了心跳问题,发现抖动期间的评分较低,(确实集群中存在写热点,但是写热点并非 leader 迁移的主机)想请教下,为什么会给某个 store 的评分设置的比较低

先看下那段时间有Leader drop的主机磁盘性能disk performance监控

业务侧产生的 uuid 有重复的情况,这个是怎么产生的?

  1. 是否开启了 evict-slow-store-scheduler (v8.1 默认开启)
  2. 检查 TiKV-Details – PD – Store Slow Score

如果 store 的磁盘空间、CPU 使用率或网络带宽接近饱和,TiKV 会认为该 store 的负载过高,从而降低其评分,以避免更多的写操作或 leader 被分配到该 store。

有没有触发 TiKV slow 熔断机制:https://docs.pingcap.com/zh/tidb/stable/pd-scheduling-best-practices#tikv-节点故障处理策略

记得有个监控可看: TiKV-Details – PD – Store Slow Score

看监控问题时间点没有触发熔断