TiDB tidb服务进程CPU使用率突然连续暴增

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 相关信息】
TiDB V5.1.0 两个PD,两个tidb,三个tikv

【现象问题】

10.14号下午2点,TiDB tidb的其中一个节点报cpu超过阈值,之后一直居高不下。

【问题告警截图】

节点CPU监控图


节点top实时图

Grafana TiDB监控信息图

【问题求助】

CPU暴增如何排查?如何找到造成CPU暴增的根本原因?

tidb的cpu暴增一般都是慢查询引起的,可以看看当前节点有没有慢查询或锁产生

另外需要看下自动analyze有没有失败的场景,是怎么配置的

这是查询出来的慢SQL。

SELECT
	DB AS '数据库',
	`Query` AS 'SQL语句',
	Query_time AS '执行耗时Query_time',
	Time AS '执行时间',
	`User` AS '执行用户',
	`Host` AS '主机',
	Total_keys AS '扫描总Key个数Total_keys',
	Index_names AS '涉及索引名'
FROM
	INFORMATION_SCHEMA.SLOW_QUERY 
ORDER BY
	Query_time DESC 
	LIMIT 100;

1.show variables analyze看下结果,如果是analyze引起的可以调整下analyze的启动和终止时间范围

2.另外用show analyze status;或者SELECT * FROM information_schema.ANALYZE_STATUS;查看下是否有失败的自动analyze导致

3.通过dashboard的热力图查看下是否有读热点问题

1:

show variables like '%ANALYZE%' 显示无相关变量及配置。
image

2:

SELECT job_info,state,start_time FROM information_schema.ANALYZE_STATUS LIMIT 500;查询结果,都是finished的job
image

3:热力图

1.analyze是小写不是大写
2.目前看起来不是失败的analyze导致的
3.写入字节量那里改成所有或者读取相关的两个

有两个建议你可以试着调整下:
1.把tidb_analyze_version改成1,这是因为在5.1版本2是实验特性,有些问题,记得当时有几个issue应该和这个有关

2.把end_time和start_time缩短一些,可以设置为业务低峰期的一到两个小时,改完后看下结果

好的,多谢

客气了,弄完可以观测下有没有效果

本质是tidboom 原因是数据有问题。sql是慢sql

@db_user @tidb狂热爱好者

查询到了有大量的慢SQL。想手动杀掉这些进程看CPU是否能下降,但又遇到了另外一个问题。kill tidb + 进程号,杀不掉。 :joy: 相关问题链接:show processlist的进程号杀不掉,且sleep时间超过time_out的限制时间,为什么不断开 - #3,来自 Harbin70KG

image

如果是在对应的instance(在sql对应的tidb上做kill tidb上杀不掉的话)那就是遇到了一个bug,我是用重启tidb节点来解决的

慢sql要从优化得方向去处理,加索引,或者改sql得逻辑和写法,总之从tikv返回tidb server得数据量尽量少,或者前端做流控

OK,今晚试试重启那个节点试试

但凡计算复杂度高点的数据操作,开发能用SQL解决的,坚决不想写代码解决。他们只会说,为什么数据库性能这么差 :joy:

找领导多跟开发沟通,运维与开发断层,各自忙各自的,会让应用系统和数据库都出现问题。制定开发规范,开发测试、压力测试,DBA都要介入

哈哈,都想省事

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。