关于tidb集群修改参数不生效疑问?


rocksdb.defaultcf.level0-slowdown-writes-trigger与rocksdb.defaultcf.level0-stop-writes-trigger值都是20,level0文件到20个,直接停止写了,没有限流写,于是想rocksdb.defaultcf.level0-stop-writes-trigger参数为36,通过tiup cluster edit-config tidb-acloud修改
tikv:
rocksdb.defaultcf.level0-stop-writes-trigger: 36
tiup cluster reload tidb-acloud,查参数,值没变

但tikv.toml配置文件已经修改了
[rocksdb]
[rocksdb.defaultcf]
level0-stop-writes-trigger = 36
这是这么回事?

需要reload重启节点。

QQ_1787216424248
已经reload,要不tikv配置文件这么生效呢?

[WARN] [mod.rs:3896] [“self.rocksdb.lockcf.level0-stop-writes-trigger is too large. Setting it to storage.flow-control.l0-files-threshold (20)”] [thread_id=1]
8版本和flow-control参数有关,rocksdb算是兜底的,不能超过flow-control设置的参数。
新版本的限流是通过flow-control相关的参数设置的。看监控,也需要看该页面。

搞明白了,要同时修改storage.flow-control.l0-files-threshold参数

2 个赞

看你的截图,配置确实写进去了,但TiKV实际生效的配置不是从tikv.toml读的,而是从PD存储的配置副本读取。edit-config改的是集群拓扑文件,reload后TiKV会从PD拉取配置覆盖本地文件。

  • tiup edit‑config + reload 已经成功下发配置文件(文件层面没问题)
  • storage.flow‑control.enable=true,TiKV 上层流控覆盖 rocksdb.defaultcf.level0‑xxx 参数
  • storage.flow‑control.l0‑files‑threshold 在 v7.5 是静态参数,单纯 reload 不重启 tikv 进程无法加载
  • 进程内存里面仍然使用旧的流控阈值 20,所以 L0 文件到 20 直接停止写入

修改rocksdb.defaultcf.level0‑stop‑writes‑trigger,要同步改storage.flow‑control.l0‑files‑threshold,否则上层 flow‑control 流控依旧会在旧阈值触发写入阻塞;二者都是静态参数,需要 restart Tikv,reload 不生效。

toml 已变但查到的还是 20,多半是看的不是运行中配置,或该参数要进程真正重启才生效。用 SHOW CONFIG 按 tikv 和参数名对每台核对,并确认 reload 没有跳过重启。若文件对、进程也重启过仍旧值,把完整配置查询结果和集群 display 贴出来,排查是否改到了别的实例。