[v8.5.3] 从7.5.6 升级后,auto_analyze无法自动关闭,导致tidbcpu异常升高。

【TiDB 使用环境】生产环境
【TiDB 版本】v.8.5.3
【操作系统】centos7
【部署方式】k8s
从7.5升级后发现,tidb 跑一段时间后,cpu就异常升高,发现日志提示如下,只能重启tidb解决
日志提示是事务问题,怎么排查
image

[2025/10/20 11:15:34.405 +08:00] [INFO] [txn.go:99] ["An internal transaction running by internal session lasts long time"] [time=12h15m34.25s] [startTS=461605699620700187] ["start time"=2025/10/19 23:00:00.140 +08:00]
[2025/10/20 11:15:34.405 +08:00] [INFO] [txn.go:99] ["An internal transaction running by internal session lasts long time"] [time=12h15m33.5s] [startTS=461605699817308248] ["start time"=2025/10/19 23:00:00.890 +08:00]
[2025/10/20 11:15:34.405 +08:00] [INFO] [txn.go:99] ["An internal transaction running by internal session lasts long time"] [time=12h15m33.5s] [startTS=461605699817308167] ["start time"=2025/10/19 23:00:00.890 +08:00]

监控

火焰图

1 个赞

第一张图文字发出来,看不清楚图片

1 个赞

文字加好了

[2025/10/20 11:15:34.083 +08:00] [INFO] [controller.go:496] ["[resource group controller] create resource group cost controller"] [name=default]
[2025/10/20 11:15:34.397 +08:00] [INFO] [domain.go:3172] ["refreshServerIDTTL succeed"] [serverID=311] ["lease id"=7bcb99ddcd5de60a]
[2025/10/20 11:15:34.405 +08:00] [INFO] [txn.go:99] ["An internal transaction running by internal session lasts long time"] [time=12h15m34.25s] [startTS=461605699620700187] ["start time"=2025/10/19 23:00:00.140 +08:00]
[2025/10/20 11:15:34.405 +08:00] [INFO] [txn.go:99] ["An internal transaction running by internal session lasts long time"] [time=12h15m33.5s] [startTS=461605699817308248] ["start time"=2025/10/19 23:00:00.890 +08:00]
[2025/10/20 11:15:34.405 +08:00] [INFO] [txn.go:99] ["An internal transaction running by internal session lasts long time"] [time=12h15m33.5s] [startTS=461605699817308167] ["start time"=2025/10/19 23:00:00.890 +08:00]
[2025/10/20 11:15:34.407 +08:00] [INFO] [advancer.go:668] ["No tasks yet, skipping advancing."]
[2025/10/20 11:15:34.586 +08:00] [INFO] [batch_coprocessor.go:558] ["detecting available mpp stores"] [total=8] [alive=8]
1 个赞

:thinking:dashboard的top sql里有记录吗?

1 个赞

重启tidb 也看不到,知道是什么了。是analyze定时任务,7.5的时候会自动关闭。升级8以后关不上了

2 个赞

:joy:我们一般都是放到深夜去执行。找到原因了就好。

1 个赞

应该是这个参数导致的

1 个赞

重启,查进程.

1 个赞

确定是auto_analyze 导致的
top sql 在重启tidb后 看不到耗时的analyze sql

tidb_max_auto_analyze_time 和tidb_auto_analyze_end_time 也关闭不了auto analyze
image

问题: 怎么去杀进程的方式关闭analyze,要不然每次都要重启tidb实例,影响生产业务
现在先关闭auto_analyze,改成跑脚本了

参考这里看看
https://docs.pingcap.com/zh/tidb/stable/statistics/#终止后台的-analyze-任务

很奇怪,看不到, 甚至连今天凌晨跑的也看不到

为什么确定是auto analyze,昨天特意改了时间,加了10分钟

你把这个参数关闭试试

关闭的

目前看耗费 CPU 是analyze 调整优先级时候的逻辑导致,按理关闭这个参数,这块逻辑就应该不跑了才对,:thinking:

要不你再取一个 cpu 使用率很高的时候的火焰图看看


建议使用 mysql.analyze_jobs 系统表去查询

查不出来

queue是早晨关的,需要提前关吗。

新的图

嗯 需要再跑 auto analyze 之前关闭,你可以关闭以后,今晚再观察一下

这种能杀掉吗,现在只能重启tidb 才能恢复, 业务会疯掉

不能,这是内部的逻辑。 从你的 cpu 来看还是有一些 cpu 富裕的,影响有这么大吗?

我不重启,新的analzye 还会跑吗