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

[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 个赞
foxchan
(银狐)
3
文字加好了
[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 个赞
foxchan
(银狐)
5
重启tidb 也看不到,知道是什么了。是analyze定时任务,7.5的时候会自动关闭。升级8以后关不上了
2 个赞
foxchan
(银狐)
9
确定是auto_analyze 导致的
top sql 在重启tidb后 看不到耗时的analyze sql
tidb_max_auto_analyze_time 和tidb_auto_analyze_end_time 也关闭不了auto analyze

问题: 怎么去杀进程的方式关闭analyze,要不然每次都要重启tidb实例,影响生产业务
现在先关闭auto_analyze,改成跑脚本了
Kongdom
(Kongdom)
10
foxchan
(银狐)
11
很奇怪,看不到, 甚至连今天凌晨跑的也看不到
为什么确定是auto analyze,昨天特意改了时间,加了10分钟
nobody
(不定时出现)
14
目前看耗费 CPU 是analyze 调整优先级时候的逻辑导致,按理关闭这个参数,这块逻辑就应该不跑了才对,
要不你再取一个 cpu 使用率很高的时候的火焰图看看
nobody
(不定时出现)
15
建议使用 mysql.analyze_jobs 系统表去查询
nobody
(不定时出现)
17
嗯 需要再跑 auto analyze 之前关闭,你可以关闭以后,今晚再观察一下
foxchan
(银狐)
18
这种能杀掉吗,现在只能重启tidb 才能恢复, 业务会疯掉
nobody
(不定时出现)
19
不能,这是内部的逻辑。 从你的 cpu 来看还是有一些 cpu 富裕的,影响有这么大吗?