暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiFlash 性能指标

原创 wzf0072 2023-06-01
315

TiFlash 集群资源利用率

  • CPU:每个 TiFlash 实例的 CPU 使用率
  • Memory:每个 TiFlash 实例内存的使用情况
  • IO utilization:每个 TiFlash 实例的 IO 使用率

TiFlash 关键性能指标

  • MPP Query count:每个 TiFlash 实例 MPP 查询数量的瞬时值,表示当前 TiFlash 实例需要处理的 MPP 查询数量(包括正在处理的以及还没被调度到的)。
  • Request QPS:所有 TiFlash 实例收到的 coprocessor 请求数量。
    • run_mpp_taskdispatch_mpp_task 和 mpp_establish_conn 为 MPP 请求。
    • batch:batch 请求数量。
    • cop:直接通过 coprocessor 接口发送的 coprocessor 请求数量。
    • cop_execution:正在执行的 coprocessor 请求数量。
    • remote_readremote_read_constructed 和 remote_read_sent 为 remote read 相关指标,remote read 增多一般意味着系统出现了问题。
  • Executor QPS:所有 TiFlash 实例收到的请求中,每种 dag 算子的数量,其中 table_scan 是扫表算子,selection 是过滤算子,aggregation 是聚合算子,top_n 是 TopN 算子,limit 是 limit 算子,join 为关联算子,exchange_sender 和 exchange_receiver 为数据发送和接收算子。

延迟指标

  • Request Duration Overview:每秒所有 TiFlash 实例处理所有请求类型的总时长堆叠图。

    • 如果请求类型为 run_mpp_taskdispatch_mpp_task 或 mpp_establish_conn,说明 SQL 语句的执行已经部分或者完全下推到 TiFlash 上进行,通常包含 join 和数据分发的操作,这是 TiFlash 最常见的服务类型。

    • 如果请求类型为 cop,说明整个语句并没有完全下推到 TiFlash,通常 TiDB 会将全表扫描算子下推到 TiFlash 上进行数据访问和过滤。在堆叠图中,如果 cop 占据主导地位,需要仔细权衡是否合理。

      • 如果 SQL 访问的数据量很大,优化器可能根据成本模型估算 TiFlash 全表扫描的成本更低。
      • 如果表结构缺少合适的索引,即使访问的数据量很少,优化器也只能将查询下推到 TiFlash 进行全表扫描。在这种情况下,创建合适的索引,通过 TiKV 访问数据更加高效。
  • Request Duration:所有 TiFlash 实例每种 MPP 和 coprocessor 请求类型的总处理时间,包含平均和 P99 处理延迟。

  • Request Handle Duration:指 cop 和 batch cop 从开始执行到执行结束的时间,不包括等待时间,只包含 cop 和 batch cop 两种类型,包含平均和 P99 延迟。

Raft相关指标

  • Raft Wait Index Duration:所有 TiFlash 实例等待本地 Region index >= read_index 所花费的时间,即进行 wait_index 操作的延迟。如果 Wait Index 延迟过高,说明 TiKV 和 TiFlash 之间数据同步存在明显的延迟,可能的原因包括:

    • TiKV 资源过载
    • TiFlash 资源过载,特别是 IO 资源
    • TiKV 和 TiFlash 之间存在网络瓶颈
  • Raft Batch Read Index Duration:所有 TiFlash 实例 Read Index 的延迟。如果该指标过高,说明 TiFlash 和 TiKV 之间的交互速度较慢,可能的原因包括:

    • TiFlash 资源过载
    • TiKV 资源过载
    • TiFlash 和 TiKV 之间存在网络瓶颈

IO流程指标

  • Write Throughput By Instance:每个 TiFlash 实例写入数据的吞吐量,包括 apply Raft 数据日志以及 Raft 快照的写入吞吐量。

  • Write flow:所有 TiFlash 实例磁盘写操作的流量。

    • File Descriptor:TiFlash 所使用的 DeltaTree 存储引擎的稳定层。
    • Page:指 Pagestore,TiFlash 所使用的 DeltaTree 存储引擎的 Delta 变更层。
  • Read flow:所有 TiFlash 实例磁盘读操作的流量。

    • File Descriptor:TiFlash 所使用的 DeltaTree 存储引擎的稳定层。
    • Page:指 Pagestore,TiFlash 所使用的 DeltaTree 存储引擎的 Delta 变更层。

可以通过 (Read flow + Write flow) ÷ 总的 Write Throughput By Instance 计算出整个 TiFlash 集群的写放大倍数。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论