请再次仔细检查下公式是 (),而不是 {} !
另外我感觉是不是gc线程的原因导致的,目前gc的CPU经常会拉到100%
参考回帖中手动和自动 compaction 加速的描述部分 ~
整理下问题以及当前排查的信息:
首先,skipped_delete_index 产生的原因如下:
--> delete/update 操作后,key mvcc 版本增加
--> GC 过后标记为 tombstone key,并且随着 GC 的运行,在未 compaction 前,该值会累积增加
--> coprocessor 查询在扫描数据时会扫描 tombstone key 在监控中表现为 skipped_delete_index 数量增加
--> tombstone key 在 RocksDB 自动触发的 compaction 后消除
--> sql 扫描到的 total key 和 process key 基本持平
在了解上述背景的前提下,建议你那里看下下述的信息:
-
在业务高峰期早 8 点 ~ 晚 10 点,update 操作 3200+ 的 qps 会不断的累积 key 的 mvcc 版本,再加上每 10 分钟会进行一次 gc,积累了数量相对多的 tombstone 版本信息,表现在监控中是 skipped_delete_index 不断的升高
-
可以通过查看问题发生期间的 slowlog,确认当时 sql 的 total key 和 process key 的情况,以及目标 sql 使用的 index name → 当前无法确认,因为相关日志么有保留
-
问题发生期间对比下 store1 和非 store1 的节点,tikv-details 监控项的差异,尤其是 compaction 相关的监控项,可以参考上面的改表达式的方式 by instance 看下各个 tikv 实例的情况
其次,skipped_delete_index 只大量集中在 store1 节点上
可能的原因是集群中的 update 或 delete 操作比较集中在 store1,造成 store1 上残留的 key 的版本过多,可以下面两个方面再次确认下:
-
写热点 → pd-ctl 无法查看问题发生期间的历史信息,且版本为 v3.0.11,没有流量可视化工具
-
和研发端确认下业务行为,比如 sql 在进行 update 操作时,具体的表现是什么?比如 2 列或者 3 列索引,只有 1 列或者 2 列 update 非常频繁
下次如果再次出现类似的问题
-
保留相关的日志信息,如 slowlog,关注下慢 sql 的 total 和 process key 的情况,见官方文档:
https://docs.pingcap.com/zh/tidb/v3.0/identify-slow-queries#字段含义说明 -
v3 版本,因 tombstone key 过多造成 sql 访问过慢,那么可以评估
-
使用 tikv-ctl 进行手动的 compact,但是需要注意 compact 操作对服务造成的影响,需谨慎使用,见官方文档:
https://docs.pingcap.com/zh/tidb/v3.0/tikv-control#手动-compact-单个-tikv-的数据 -
加速 RocksDB 自动 compaction 的速度,参考文档调整 compaction 的线程相关的参数,比如
max-background-jobs
,max-sub-compactions
,通常情况下无需调整,如果一定要调整,那么需要关注线程调高带来的 IO 压力以及对前端业务的影响:https://docs.pingcap.com/zh/tidb/v3.0/tikv-configuration-file#rocksdb
- 升级集群版本,当前 v3.0.11 版本过老,在 v4 版本以及 v5 版本,易用性,稳定性新增了非常多的 feature,并且在其他社区用户的生产环境得到了积极的反馈。其中,v5 版本新增的 GC in Compaction Filter 特性来避免清理掉的旧版本残留大量删除标记影响顺序扫描性能,具体可以搜索官方文档.并且类似问题,仍然在持续优化:
Handle gc on all levels by hicqu · Pull Request #10573 · tikv/tikv · GitHub
感谢~
如果我调整rockdb的参数,是不是要滚动升级才能生效
3.0.11 TiKV 的参数修改都是需要滚动升级的。4.0 开始支持在线修改一些配置,可以参考一下:
https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改集群配置
好的 谢谢~
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。