TIKV IO占用100%

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

  • 【TiDB 版本】:V2.1.3(问题是28号发生的,这是发生问题时的版本,目前升级至V3.0.13)
  • 【问题描述】:
    在通过接口批量导入大概1w条数据,导致3台tiKV节点 IO占用 100%,导致后续的所有接口请求无法响应。

附上当时的监控截图:

请问到底是什么原因造成的,以后如何避免产生同样的问题,谢谢(另外故障排查那个脚本点击无法下载)

补充下:
整个数据量很小,大概1.2w条,request body大概 1.3~1.5K左右,存在一个varchar,长度2000的字段。
插入数据接口的数据样例:

{
“baseid”:“ad0f56d2-4c5a-4b02-9127-6db8cc099820”,
“adress”:“北京市海淀区上地十街10号百度大厦三层 “,
“legalName”:“李彦宏”,
“businessScope”:“开发、生产计算机软件;提供相关技术咨询、技术服务、技术培训;承接计算机网络系统工程;货物进出口、技术进出口、代理进出口;设计、制作、代理、发布广告;软件开发;技术开发、技术推广、技术转让;销售自产产品、医疗器械II类、电子产品、器件和元件、计算机、软件及辅助设备、灯具、五金交电、自行开发后的产品;计算机系统集成;委托加工生产通讯设备;销售第三类医疗器械。(销售第三类医疗器械以及依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动。)”,
“name”:” 百度在线网络技术(北京)有限公司”,
“businessStatus”:“营业”
}

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

从监控看起来,Duration 的波动跟 IO Until 的波动基本一致,QPS 并不高,可以先检查一下:

  1. 问题时间段有没有 slowlog ,引起 IO 被打满。
  2. 可以排查一下 node_exporter disk 部分的监控,看看流量以及 iops 在问题时间段的情况,然后配合 Tikv 的 write flow 以及 read flow 看下是否有问题。

你好,进一步的信息如下:

write、read flow

108/109/110是3台tikv
108 node_exporter:

109 node_exporter:

110 node_exporter:

  1. 根据 node_exporter 的监控看到三台机器挂载了多个盘,请问这边是多个实力同时在跑吗?另外 read flow 和 write flow 对应是哪个 instances 的?
  2. 从 read flow 和 write flow 来看 read 的流量远大于写入的流量,麻烦检查下问题时间点内的慢日志。看看是否由于有问题 SQL 导致的 IO 打满的问题。

1.tikv没有多实例: [tikv_servers] 192.168.16.108 192.168.16.109 192.168.16.110

上面图的 write flow 统计的all,3台的。单台的趋势和3台一致,read 1GBPS write 几MBps。

2.截取了其中一台的tikv在时间段内的日志: slow_query (133.9 KB)

麻烦看看问题时间内的 TIDB 的慢日志。可以先通过 pt-query-digest 来进行聚合看看 从 SQL 这块有没有问题。