tikv节点大量Key is locked (will clean up) primary_lock

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
收到TiKV_pending_task告警,查看了监控


查看TiKV_pending_task告警的tikv节点,发现以下日志

[2024/06/27 02:11:35.641 +00:00] [WARN] [endpoint.rs:782] [error-response] [err="Key is locked (will clean up) primary_lock: 7480000000000001E15F72010E2B0E2D0E290E2FFF0E2B0E300E290E2BFF0E290E290E2F0E2BFF0E2E0E290E2D0E2CFF0E320E32021B0E2DFF0000000000000000F7 lock_version: 450744626864980002 key: 7480000000000001E15F698000000000000004040356E0FFF62FB5CF010E2B0E2D0E290E2FFF0E2B0E300E290E2BFF0E290E290E2F0E2BFF0E2E0E290E2D0E2CFF0E320E32021B0E2DFF0000000000000000F7 lock_ttl: 3000 txn_size: 1 lock_for_update_ts: 450744626864980002 use_async_commit: true min_commit_ts: 450744626864980003"]

搜索了一下论坛,有相关的问题 专栏 - 一次 meet_lock 告警异常处理过程 | TiDB 社区 ,但是我查看pd上并没有empty region

通过 tiup ctl:v6.5.2 pd -u http://xxx.xxx.xxx.xxx:2379 -i

region key 7480000000000001E15F72010E2B0E2D0E290E2FFF0E2B0E300E290E2BFF0E290E290E2F0E2BFF0E2E0E290E2D0E2CFF0E320E32021B0E2DFF0000000000000000F7
{
  "id": 118421,
  "start_key": "7480000000000000FFF15F728000000000FFA68D4B0000000000FA",
  "end_key": "7480000000000001FF1B5F728000000000FF0000060000000000FA",
  "epoch": {
    "conf_ver": 23,
    "version": 691
  },
  "peers": [
    {
      "id": 118422,
      "store_id": 248,
      "role_name": "Voter"
    },
    {
      "id": 118423,
      "store_id": 249,
      "role_name": "Voter"
    },
    {
      "id": 118424,
      "store_id": 250,
      "role_name": "Voter"
    }
  ],
  "leader": {
    "id": 118422,
    "store_id": 248,
    "role_name": "Voter"
  },
  "cpu_usage": 0,
  "written_bytes": 135133,
  "read_bytes": 957,
  "written_keys": 60,
  "read_keys": 0,
  "approximate_size": 133,
  "approximate_keys": 185869
}

查询TIKV_REGION_STATUS

mysql> SELECT * FROM INFORMATION_SCHEMA.`TIKV_REGION_STATUS` WHERE region_id=118421;
Empty set (0.71 sec)

这个region就不存在,请问这是怎么问题导致的?如何解决

“leader”: {
“id”: 118422,
“store_id”: 248,
“role_name”: “Voter”
},

SELECT * FROM INFORMATION_SCHEMA.`TIKV_REGION_STATUS` WHERE region_id=118422;

查这个试试

没有结果

在观察下是否还有这个错误出现

region 不存在,有几个场景:

  1. 被合并了
  2. 被分裂了

要看看是那种情况

现在发现有些是存在的,但是这个是在做什么

数据多了,会按照基本region 的配置进行分裂咯
数据少了,region 过多占用资源,会自动合并

你是说是正常现象?

对,多观察下,是否经常出现,
经常出现肯定不正常了

楼主的数据是存在大量的数据增删吗

有两个表因为时间字段是bigint,使用的pt-archive归档的,查了一下region不是那两表个表

pt-archive 归档就是先写,后删。我理解 lock Delete 也预期?

是有具体觉得有问题的地方么?

这个keyislocked是锁残留吧,是不是有tidb节点重启了?导致有事务没执行完?region的分裂合并不影响这个吧。

的确挺奇怪的,没遇到过。

tidb节点没重启过

tidb 事务开启后会持续的发送txn_heart_beat,如果tidb没有重启的话,这个会一直发送,直到超过事务的最大时间。