IO占用高问题排查

tidb版本:v4.0.10,部署:3节点,组件有混在一起部署
问题:通过自己写的程序同步数据时,写入倾斜比较大;写入过程中和写入完成后,很长一段时间io使用也很高(部分节点),该如何来排查?

top查看该节点,一直是tidb和pd占用

top 看到的是 tidb 和 pd 的 CPU 占用比较高
可以通过 iotop 看下 io 占用高的进程是哪些,看下结果

现在是另外一台机器了,显示的是tiflash,但是我只装了tiflash,并没有开启任何一张表

意思是 IO 高的节点转移了?之前是 tidb 和 pd 那个节点 IO 高,现在是 TiFlash 所在的节点高?

是的,现在到TiFlash了。
再请教一个问题,这种空的region系统不会自动合并吗?我们可以怎么优化

  1. TiFlash 高应该是 TiFlash 在同步数据
  2. empty region 的问题可以参考下这个 FAQ :[FAQ] 解决已经开启 region merge, empty-region-count 仍然很多问题

但是我查了tiflash_replica里面没有任何数据,而且也没有开启任何一张表的tiflash同步

我这边把tiflash下线之后,依然还是会占用很高的io

image

可以截图下 TiFlash-Summary 中 Storage -> “Page GC Task Duration” 监控

不知道是不是因为下线了tiFlash,监控中没有任何数据

时间选取下线之前的时间呢

选取了最近2天的,也没有数据

集群是如何部署的?是通过 tiup 吗?
TiFlash 节点是如何部署的?

都是通过tiFlash部署的,下面是部署的集群信息,目前tiFlash已经下线

  1. TiFlash 节点的日志还在吗?在的话麻烦提供一下
  2. 出现 IO 被 BkgPool 线程占用的时间段是怎么样的?
  3. BkgPool 线程占用 IO 是持续性的吗?

日志已经删除了,BkgPool线程占用情况也没有长时间监控。我这边先观察下

好的,后续如果有复现这个问题的话,希望可以保留一下现场,我们看下。