【TiDB 4.0 PCTA 学习笔记】- 3.7.7 TiKV optimization(TiKV Server 优化) @2班+李响

课程名称:3.7.7 TiKV optimization(TiKV Server 优化)

学习时长:

60分钟

课程收获:

当遇到性能瓶颈时,进行性能提优。

课程内容:

一、TiKV Architecture Overview

  1. 完整架构图(分布式的KV数据库)
  2. 分层设计图
  3. 模块

二、Processing in TiKV

  1. TiKV write processing
  • 主要涉及三个线程池
    • scheduler pool:通过scheduler-worker-pool-size参数配置大小
    • raftstore pool:通过store-pool-size参数配置大小
    • apply pool:通过apply-pool-size参数配置大小
  • 分析写请求是否达到瓶颈
  • 如果分析IO是瓶颈并且CPU还有剩余,可以通过CPU资源换取IO资源
  • 如果分析是rocksdb stall但IO和CPU都不是瓶颈,主要有三个可能
    • 太多的Level0文件,造成读性差,通过下面参数解决
    • 太多的memtables,很多数据在内存中并未刷到Level0文件,通过下面参数解决
    • 太多的pendig
  • 如果在导数据时,可以调整触发rocksdb流控阈值
    • level0-file-num-compaction-trigger:level0层有多少文件将会触发compaction
    • level0-slowdown-writes-tigger:level0层有多少文件将会让写入变慢
    • level0-stop-writes-trigger:level0层有多少文件将会让写入停止
    • 如果确定level0层文件多是一个预期的事情可把后两个参数调高
  • 如果按前六步分析均无问题,还有种可能是网络延迟问题,可以查看log commit是不是很慢

    如果触发了raftstore中的流控,可以通过调大rafstore.raft-max-inflight-msgs和rafstore.raft-max-size-per-msg这两个配置
    • rafstore.raft-max-inflight-msgs是指Consensus层允许发出的最多消息数
    • rafstore.raft-max-size-per-msg是指Consensus层一个消息最大的大小
  1. TiKV read processing
  • 对延迟直接查看线程池CPU使用率
  • 对于CPU使用率不高或经过分析处理时间并不高,都在等待中可以查看以下问题
    • 太多的Scan,检查触发Scan的执行计划是否正确
    • 负责是否均衡
    • 线程池是不是太小
  • 检查block cache的命中率,如果低可以调大capacity

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。