tidb经常抖动

优化因调度功能不完善或者 I/O 限流不完善引起的性能抖动问题

TiDB 调度过程中会占用 I/O、Network、CPU、Memory 等资源,若不对调度的任务进行控制,QPS 和延时会因为资源被抢占而出现性能抖动问题。通过以下几项的优化,长期测试 72 小时,衡量 Sysbench TPS 抖动标准差的值从 11.09% 降低到 3.36%。

  • 减少节点的容量总是在水位线附近波动引起的调度及 PD 的 store-limit 配置项设置过大引起的调度,引入一套新的调度算分公式并通过 region-score-formula-version = v2 配置项启用新的调度算分公式 #3269
  • 通过修改 enable-cross-table-merge = true 开启跨 Region 合并功能,减少空 Region 的数量 #3129
  • TiKV 后台压缩数据会占用大量 I/O 资源,系统通过自动调整压缩的速度来平衡后台任务与前端的数据读写对 I/O 资源的争抢,通过 rate-limiter-auto-tuned 配置项开启此功能后,延迟抖动比未开启此功能时的抖动大幅减少 #18011
  • TiKV 在进行垃圾数据回收和数据压缩时,分区会占用 CPU、I/O 资源,系统执行这两个任务过程中存在数据重叠。GC Compaction Filter 特性将这两个任务合二为一在同一个任务中完成,减 I/O 的占用。此特性为实验性特性,通过 gc.enable-compaction-filter = true 开启 #18009
  • TiFlash 压缩或者整理数据会占用大量 I/O 资源,系统通过限制压缩或整理数据占用的 I/O 量缓解资源争抢。此特性为实验性特性,通过 bg_task_io_rate_limit 配置项开启限制压缩或整理数据 I/O 资源。