TIKV总有一个CPU高,热点越分裂越多

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v2.1.8
  • 【问题描述】:TIKV总有一个cpu过高 TIDB新手,问题如下: 三台tikv_server,每台两个实例KV,共6个。有外部服务器不停的读取TIDB数据库里的某一张表(百万量),导致hot read,参照很多帖子,确认读热点region,然后进行分裂,结果是hot read越来越多,6个KV中,总会有一个CPU很高,而且有Errps。求大神们帮忙看看。 image image image image image 原本只有一个hot read,但是我分裂了很多次就成这样了。某一个KV的CPU高导致这上的region对应的一些表格打开和读取都很慢。 截了tidb.log和tikv.log的一点内容:

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

您好:

      1. 是指tikv2的cpu高对吗? 
      2. 从cpu截图上看,每个tikv实例的最大cpu都差不多,当前tikv2的cpu较高,是由于tikv2-read当前在大量的读取数据,所以cpu较高. 
     3. 从热点读看,几乎每个tikv实例都有4或5个,比较均衡. 但是tikv2的数据量读取更多,导致cpu较高.
     4. 从你的cpu看,应该不只是tikv2一直过高,其他节点也可能cpu过高,看一下当前tikv节点的region数量和可用空间,可以考虑扩容tikv,降低单个tikv节点数据读取量。

谢谢。 1.是的,当前是tikv2高,但是有时候手动分裂后会跳到别的KV上。 2.是因为我分裂过,所以每个最大值都有高的时候。 4.region数量和可用空间我截了图,看着都还好啊。 image image

我还要继续分裂读热点吗?读热点越来越多不会导致整体性能都很低吗?就别的KVcpu最起码还有个波动,这个异常的就一直一条直线。

您好: 1. 查看的是当前的热点就有4到5个,不是最大值 2. 你当前可以查看是哪些region是读热点,可以不均分,你可以根据region中的数据分布,来split region,参数不均匀分布.

我描述一下我的服务器的性能:四台服务器,配置一样,都是16C,内存256g,硬盘是SSD,四块,容量是960G*4。一台复用TIDB-server和PD,一台复用PD和TIKV,剩下两台纯TIKV。每个TIKV上是2个实例,共6个实例。我安装的时候配置的每个TIKV的coprocessor都是6, defaultcf—lock-cache-size是64GB。现在每个实例的CPU都蛮高的,还有一个一直是类似直线,已经分裂过很多次,不能解决。下面是截图和慢查询日志: image

请帮忙看一下,谢谢。

慢日志太大,上传不上去,怎么办

不用上传所有的慢日志,上传一下截图这个时间段的一些慢日志就可以了。

tidb-slow.rar (1.6 MB)

感谢,正在分析,会尽快答复

  1. 查看thread cpu,cpu消耗主要再coprocessor cpu image
  2. 查看慢日志,有比较多的查sql, 即使只有一行,也走了全表扫描
  3. 查看当前统计信息健康情况不好,先收集统计信息,再执行一次sql,等待反馈结果. image
  4. 查看表结构信息,SN列没有索引,导致查询都走了全表扫描,其他类似sql也是这个问题,添加索引后,可以看到CPU使用率非常低 image
1赞