Key is locked (will clean up) primary_lock:

【 TiDB 使用环境】生产环境 or 测试环境 or POC
【 TiDB 版本】5.2.2, 默认是悲观锁
【遇到的问题】TiKV有负载报警,对应的时间看到如下日志,主要是Key is locked (will clean up) primary_lock, 这个通常有什么问题?
【复现路径】做过哪些操作出现的问题
【问题现象及影响】
[2022/04/26 09:00:04.490 +08:00] [WARN] [endpoint.rs:633] [error-response] [err=“Key is locked (will clean up) primary_lock: 74800000000000250A5F69800000000000000104000000000B73142703800000001AE943C9 lock_version: 432782653252435997 key:
74800000000000250A5F69800000000000000404000000000000000003800000001AE943C9 lock_ttl: 3000 txn_size: 1 min_commit_ts: 432782653252435998”]

[2022/04/26 09:00:01.796 +08:00] [WARN] [endpoint.rs:633] [error-response] [err=“Key is locked (will clean up) primary_lock: 7480000000000000155F69800000000000000203800000000000B71E lock_version: 432782651994145114 key: 748000000000000015
5F6980000000000000010406018D876D10015A0380000000002C116D lock_ttl: 8084 txn_size: 2 lock_for_update_ts: 432782652636397676 min_commit_ts: 432782652636397677”]

[2022/04/26 09:00:03.897 +08:00] [WARN] [endpoint.rs:633] [error-response] [err=“Key is locked (will clean up) primary_lock: 7480000000000022AA5F728000000018E00E17 lock_version: 432782652937863942 key: 7480000000000022AA5F6980000000000000
04040000000000000000038000000018E00E17 lock_ttl: 3761 txn_size: 1 lock_type: Del lock_for_update_ts: 432782652937863942 min_commit_ts: 432782652937863943”]
【附件】

应该是业务代码里出现死锁了

应用有影响吗? tikv中锁实现时会选择第一行作为lock Primary key,其他行的锁信息指向该行,当提交时完成primary lock清理就返回commit成功,其他行会异步清理,如果没有来的及清理其他事务执行时遇到锁会进行清理或等待重试。

1 个赞

目前没有影响,就是TIKV有负载高的报警,看到对应的日志。

多少tikv, cpu 磁盘利用率多少

ssd raid0磁盘 使用10+%, cpu: 64vcpu 使用30+%

tikv 监控 thread cpu利用率

unified read pool 2000%~3000% 64cpu。 参数是51, 最大值应该是5100.

1 个赞
  1. 原理同 @h5n1 老师解释的那样;
  2. 可以发下 LockResolve OPS 的面板

如果业务没有影响,可以当内部解锁机制去处理。
可能是有什么事务崩溃执行失败,导致锁未及时清除。
深追就要看下日志里哪些 事务执行失败了之类的。

从SQL层面分析一下事务锁吧,看看最多的dml语句是哪个,相关的业务在数据库操作流程,看看是不是事务过大,或者事务开始时间到commit的时间有点长。

记得PCTP中有一节讲的是这个key是异步完成清理的,对实时业务应该是不会有啥影响的。

老铁你的问题解决了吗?我今天也遇到了这个问题,我三个tikv,其中一个直接占了60%内存,我查看了一下锁信息发信没有啊

mei wen t

重新发个新帖咨询一下~

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