tidb读写都很慢

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】v5.1.0

【概述】 场景 + 问题概述
随便一个sql都很慢,建个简单的test表,就两个字段,插入和读取都很慢
【应用框架及开发适配业务逻辑】

【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】 v5.1.0

【附件】 相关日志及监控(https://metricstool.pingcap.com/)
grafana看机器负载都很正常

tikv有下面的log:


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

写入慢需要排查的因素很多,可以参考这个SOP。

你 发的 那个报错看着是有锁

  • primary_lock:锁对应事务的 primary lock。
  • lock_version:锁对应事务的 start_ts。
  • key:表示被锁的 key。
  • lock_ttl: 锁的 TTL。
  • txn_size:锁所在事务在其 Region 的 key 数量,指导清锁方式。

通过关键字"prewrite encounters lock" 过滤预写阶段遇到的锁冲突的tableID:

grep “rewrite encounters lock” tidb.log |awk -F “tableID” ‘{print $2}’ | awk -F “,” ‘{print $1}’ | sort | uniq -c

通过关键字"Write conflict 过滤写冲突的tableID:
grep “Write conflict” tidb.log |awk -F “tableID” ‘{print $2}’ | awk -F “,” ‘{print $1}’ | sort | uniq -c
6 =49
1 =118
1 =23
1 =332
10 =49
6表示冲突次数,49表示tableID。
可以查出是哪个表有冲突

过滤出出现次数最多的 primary_lock
cat tikv.log |grep error-response | awk -F “primary_lock:” ‘{print $2}’ | awk -F " " ‘{print $1}’ | sort | uniq -c | sort -n

通过region key 命令找到 region

tiup ctl pd -u http://{pdip:port} -i

region key xxxxxxxxxx
可以 查出是具体哪个region 有锁冲突

然后 查看一下 region 元数据信息属于哪个表

SELECT * FROM INFORMATION_SCHEMA.TIKV_REGION_STATUS WHERE region_id=xx;

如果过滤出来锁不多的话不一定是你发的那个日志报错问题引起慢

锁很少,我这整个db都很慢,就见了test的表试了下,这会又都好了,看监控,负载什么的都不高,请问还要怎么排查?

https://docs.pingcap.com/zh/tidb/v5.2/exporting-grafana-snapshots/#将-grafana-监控数据导出成快照 按此将问题时间段前后1小时的tikv detail /pd/tidb/ node exporter/overview的监控导出下

3个tikv,发现有一个的io经常是100%

1赞

普通的磁盘吗? 这上面有跑其他的没, tikv 的cpu是不是很不均衡

1赞


io有问题的也是1.7
应该也不是热点导致的

是不是有慢查啊把io打满了 或者 有热点的region 你这个集群qps怎么样 有高频读或者写入 的小表吗

dashboard看下热点情况还有 慢语句情况

看CPU频率像是GC,但利用率不高,插入和读取的慢SQL信息在dashboard或慢SQL日志找下

是有慢查询,但分析了下,都是命中了索引的,在其他环境查了很快,应该还是有台tikv io高导致的慢吧

看下慢SQL的时间分布

确认了,是磁盘问题,切换了,现在没问题了,谢谢大家!

2赞