应用卡,tidb性能问题如何调优

版本:5.7.25-TiDB-v5.4.0
部署方式:k8s
节点情况:

问题:
1、tikv节点会经常出现部分节点CPU高,各个TIKV节点CPU使用不均匀,感觉有热点问题,下图显示的KV节点在不同时段总有那么一两个POD节点CPU高,导致物理机CPU不同时段不同物理机CPU告警,请问如何定位问题去解决优化它。

2、使用select * from INFORMATION_SCHEMA.CLUSTER_TIDB_TRX tt order by start_time 查询集群事务,发现事务这么久还在跑(时间显示相差8小时),使用MySQL的方式去kill这个事务(kill session_id, 到具体tidb实例里面kill也不行),如何KILL掉事务呢?

3、执行一段SELECT,超时报错: Coprocessor task terminated due to exceeding the deadline
这是什么错误呢

4、数据库报错:[type] => default:8027
[info] => Information schema is out of date: schema failed to update in 1 lease, please make sure TiDB can connect to TiK ,这是什么原因呢

5、执行表的查询, 报错: inconsistent index idx_cosume handle count 349 isn’t equal to value count 348,
执行:admin CHECK INDEX ims._of_com_mq idx_consumer,发现表记录数和索引记录数不一致,为什么会出现这个情况呢,该怎么解决呢,我尝试删除索引,重新创建一个索引,但是后面执行admin checK,,发现报错: Coprocessor task terminated due to exceeding the deadline

6、在第五步执行admin check的时候,发现卡死了,等待了很久没反应,查看admin show ddl jobs,发现如下问题:


为什么会出现queueing的状态,到底是在排队等谁呢,执行cancel的时候,发现也还是一样,该怎么处理呢 ?

7、查看tidb 的 dashboard中的慢SQL,发现好慢,为啥这个监控的地方会这么慢,是查询etcd里面的数据太慢了吗,还是说数据量太大了?

我来给你解决稍等一下 我理一下思路

物理机配置以及pod的分布信息是什么样的

1、不一定是热点问题,CPU高是慢查询占用了,可以优化慢查询
2、kill tidb +id
3、和集群负载有关,还是需要优化慢查询
4、慢查询https://asktug.com/t/topic/603857/4
5、和集群负载有关
6、queueing等待调度,可能是tidb leader未调度成功,是不是高峰期才出现,平时未出现,可以看看tidb leader的日志
7、也是查内存表information_schema.cluster_slow_query 。
综上,如果之前无问题,可以先优化慢查询降低集群负载。

TIKV的节点分布在7个物理机上,物理机的配置基本在:
40-64核CPU
内存都是
磁盘都是SSD

但是每台物理机还有其他的应用,比如:mysql, es,java, php等应用

因为我们的所有部署都是k8s的方式,包括mysql数据库,所以很多应用都共享主机资源

感谢你的回复,kill事务我想问下:
是kill tidb id,还是kill tidb session_id?

因为我试了下kill tidb id (比如这里是:436515425527267503); 会如上图那样等好久没反应 ,即使进入到对应的tidb-4实例里面去也是一样。
如果用kill tidb session_id(比如这里是117823)虽然会提示成功,但是再查询也是还存在这个事务。

遇事不决先看看 Dashboard, 有没有慢 SQL, Top SQL,热点图,做个快速判断,然后再查其它的。

1 个赞

你这个问题和我之前遇到的类似,从你提供的信息来看,应当是集群的负载问题。

这种情况我们的解决办法都是先找慢SQL,然后解决掉慢SQL,基本就搞定了

他和我私聊过 他们tidb 和业务用的是同一台k8s 而且也没做慢sql限制 慢慢的就变卡了

1 个赞