暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

tidb 事务执行超时

原创 日拱一卒 2024-08-16
151

一、问题

研发反映执行事务时报超时退出。错误如下
[error="[tikv:8229]TTL manager has timed out, pessimistic locks may expire, please commit or rollback this transaction"]

二、分析

通过dashboard里面查询日志,搜索ttl manager has timed out 关键字,并结合研发给的时间点,找到超时的语句。在此事务报错日志里记住语句的报错时间戳 注意这个是其他事务的,也就是阻碍本次事务失败的早期执行且未结束的事务。
[timestamp=451785963642290189]

查看PD的地址
tiup cluster display tidb01

tiup ctl:v7.1.5 pd -u http://xx.xxx.xx.xx -i
输入下面信息,
» tso 451785963642290189 ###输入上面报错时间戳
system: 2024-08-12 09:38:00.154 +0800 CST ###这个是阻碍的事务开始的时间
logic: 13

查看txnstart的开始时间。注意在所有tidb节点执行。txnstart 列可以看到有事务开始时间和上面的相同,可以确定就是这个阻碍了后面失败的事务。
select id,host,db,command,time,info,txnstart from INFORMATION_SCHEMA.processlist where db=‘xxxx’;

使用下面语句可以,能快速查看整个集群上所有 tidb 节点中正在执行的事务信息,确定是哪个节点在执行长数据, INFORMATION_SCHEMA.cluster_tidb_trx ↓ 里的session_id就是会话ID
MySQL [(none)]> select INSTANCE,ID,START_TIME,CURRENT_SQL_DIGEST,STATE,WAITING_START_TIME,SESSION_ID,USER,DB from INFORMATION_SCHEMA.cluster_tidb_trx;
±--------------------±-------------------±---------------------------±-------------------±------±-------------------±--------------------±------±-------+
| INSTANCE | ID | START_TIME | CURRENT_SQL_DIGEST | STATE | WAITING_START_TIME | SESSION_ID | USER | DB |
±--------------------±-------------------±---------------------------±-------------------±------±-------------------±--------------------±------±-------+
| xxxxx:10080 | 451785963642290189 | 2024-08-12 09:38:00.154000 | NULL | Idle | NULL | 8569054866188681547 | nc_rw | NC_AMC |
| xxxxxx:10080 | 451815356656254987 | 2024-08-13 16:46:45.604000 | NULL | Idle | NULL | 4661821549632179135 | root | |
±--------------------±-------------------±---------------------------±-------------------±------±-------------------±--------------------±------±-------+
2 rows in set (0.003 sec)

三、解决

在上面的processlist里查看到id,或者 INFORMATION_SCHEMA.cluster_tidb_trx 里面的session_id,
进行kill xxxxxx

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论