- RocksDB 线程池是 RocksDB 进行 Compact 和 Flush 任务的线程池,通常不需要配置。
- 如果机器 CPU 核数较少,可将
rocksdb.max-background-jobs与raftdb.max-background-jobs同时设置为 4。 - 如果遇到了 Write Stall,可查看 Grafana 监控上 RocksDB-kv 中的 Write Stall Reason 有哪些指标不为 0。
- 如果是由 pending compaction bytes 相关原因引起的,可将
rocksdb.max-sub-compactions设置为 2 或者 3(该配置表示单次 compaction job 允许使用的子线程数量,TiKV 4.0 版本默认值为 3,3.0 版本默认值为 1)。 - 如果原因是 memtable count 相关,建议调大所有列的
max-write-buffer-number(默认为 5)。 - 如果原因是 level0 file limit 相关,建议调大如下参数为 64 或者更高:
- 如果是由 pending compaction bytes 相关原因引起的,可将
- 如果机器 CPU 核数较少,可将
rocksdb.defaultcf.level0-slowdown-writes-trigger
rocksdb.writecf.level0-slowdown-writes-trigger
rocksdb.lockcf.level0-slowdown-writes-trigger
rocksdb.defaultcf.level0-stop-writes-trigger
rocksdb.writecf.level0-stop-writes-trigger
rocksdb.lockcf.level0-stop-writes-trigger
https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview#rocksdb-后台线程与-compact