报警TiKV_GC_can_not_work,但是按官方文档查看又查不到相关日志进行定位

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
tidb5.0.1
【问题描述】
tidb dashboard报警TiKV_GC_can_not_work,通过 SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME="tikv_gc_leader_desc"查看对应tidb-server的tidb.log日志,结果grep gc_worker tidb.log命不到信息,人工查看确实没有。这样也无法通过官方文档查询日志定位是什么问题。相关截图和日志如下


tidb.log (5.1 KB)


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

可以先看下下面的文档对定位这个问题是否有帮助:

https://asktug.com/t/topic/67761

另外,如果方便,请上传下 select * from mysql.tidb 的信息~

你上面的三篇文档我看了谢谢。现在我说下我pd日志级别是warn,tidb是warn,tikv是error,我看文档gc日志是info的所以在我的tidb.log我看不到。
select * from mysql.tidb 的信息我发给你:

文档的说法是这样的:
https://docs.pingcap.com/zh/tidb/dev/alert-rules#tikv_gc_can_not_work

如果发现这段时间一直在 resolve locks 或者 delete ranges,说明 GC 进程是正常的

意思是这个报警发出来,也不一定不正常。那么这个报警规则也许不太合适

不知道能不能配合 tidb_tikvclient_gc_worker_actions_total 指标,把报警规则改良一下

“如果发现这段时间一直在 resolve locks 或者 delete ranges,说明 GC 进程是正常的“这句话我看了文档是在日志里通过INFO级别打出来的。而我的日志级别是WARN,所以在我的日志里是看不到的。select * from mysql.tidb的信息我上面已经发了, tidb_tikvclient_gc_worker_actions_total报警规则修改我不确定在哪里改,另外我看到有人说这是5.0.1这个版本的问题,但是我测试环境的也是5.0.1版本却没有报警

报警规则优化我是跟 @zhenjiaogao 提的建议


也许就是这样的,因为 TiDB v4 版本的报警规则 是不一样的
sum(increase(tidb_tikvclient_gc_action_result{type="success"}[6h])) < 1

这种情况算不算 误触发 这个报警呢 tikv_gc_compaction_filter_perform 指标存在,但是一天不变化,同时 tikv_gcworker_gc_tasks_vec{task="gc"} 也一天不变化

一个完全新的集群,好像因为 tikv_gc_compaction_filter_perform 不存在,这个报警不会触发

@zhenjiaogao



你看会不会是我的集群最近一段时间都是select操作没有write操作的原因呢

我觉得从 TiDB GC worker actions 图看是没有问题的,但是还是等官方的技术支持回复吧

这个问题应该和下面的帖子是一个问题,可以等 v5.0.2 发布之后尝试升级一下集群:

升级到了5.1.0,开发环境的tidb集群没有这个告警,但是生产环境这个告警一直存在

开发环境和生产环境现在都已经是 v5.1.0 了吗?

是的,都已经是了

1.可以对照开发环境和生产环境看下 GC 配置方面有和区别;
2.若没有区别,可以反馈下生产环境中 tikv-details 监控面板中 gc 信息,以及gc leader 所在的 tidb.log

1,开发环境和生产环境配置一样,而且通过日志信息可以判断生产环境的gc也是正常的在进行的
2,gc leader的tidb.log:tidb.log (5.4 MB)
监控面板:



告警一直都在的截图:

日志中只有 warining 信息,grpc: Server.Serve failed to create ServerTransport,而且这个信息不会影响 gc 正常推进,看起来还是之前的问题 ,不过看了下好像并没有 pick 到 5.1 版本上:https://github.com/tikv/tikv/pull/9927/files

日志中有gc_worker的信息的,是显示gc正常进行的。但是为什么我的开发环境就不报这个告警了呢

可以看下是不是开发环境和生产环境的数据量差异比较大,触发问题的概率比较小。

生产环境数据量比开发环境数据量多,一般开发环境就上百条数据,开发环境一万左右,都是新集群,特点应该是新增数据,修改数据 操作比较多,删除操作很少