【TiDB 4.0 PCTA 学习笔记】- 2.3.4 How to Benchmark(如何对 TiDB 进行基准测试)@2班+李响

课程名称:2.3.4 How to Benchmark(如何对 TiDB 进行基准测试)

学习时长:

50分钟

课程收获:

了解如何对 TiDB 进行性能测试

课程内容:

一、测试建议

  1. 实例硬件选择
  • TiDB实例:选用高性能CPU
  • TiKV实例:建议不少于三个、需要配备高性能SSD,CPU建议16C及以上,内存总大小不低于单机数据量的10%
  • PD实例:需要SSD,不需要太多的CPU和内存(4C16GB)
  1. TiDB并发数控制在500以内,否则建议增加TiDB节点

  2. 使用多个TiDB

  • 在每个TiDB上运行,将结果累加计算出结果
  • 前端部署HAProxy等工具进行测试
  1. 配置
  • 首先建议参考官网相关的配置,视测试环境进行相应调整
  • 进一步调优参考TiKV相关文档

二、Sysbench工具

  1. 安装配置文件

  2. 创建测试库

create database sbtest;

  1. Auto retry
    $ set global tidb_disable_txn_auto_retry = off;
    TiDB4.0之前使用的是乐观事务需要开启,以免造成事务冲突导致测试失败。

  2. prepare
    $ sysbench --config-file=config oltp_point_select --tables=16 --table-size=10000000 prepare

  3. Analyze table

ANALYZE TABLE sbtest7;

  1. Warm up data by select

SELECT COUNT(pad) FROM sbtest7 USE INDEX (K_7);

  1. Run benchamrk
    $ sysbench --config-file=config oltp_read_write --tables=16 --table-size=10000000 run --threads=64

  2. 建议导入数据后将相应数据备份,保证每次测试都使用相同数据进行

三、TPC-C

  1. 安装

  2. 配置

  3. 创建测试库

create database tpcc;

  1. Auto retry
    $ set global tidb_disable_txn_auto_retry = off;

  2. Initial tpcc tables
    $ cd run && ./runSQL.sh props.mysql sql.mysql/tableCreates.sql &&\ ./runSQL.sh props.mysql sql.mysql/indexCreates.sql

  3. Run tpcc load
    $ ./runLoader.sh props.mysql

  4. Run Benchmark
    $ ./runBenchmark.sh props.mysql

  5. 结果
    主要看tpmC(NewOrders)

  6. Check consistentency(Optional)监测正确性
    $ ./runSQL.sh props.mysql sql.common/test.sql

四、常见问题

  1. 增大并发TiKV CPU利用率低
  • 检查写入是否有热点
  • 通过TiKV Thread CPU Panel检查TiKV是否存在某个模块到达CPU瓶颈
  1. 增大并发TiKV没有到达CPU使用瓶颈,TiDB的CPU仍然很低
    考虑是否因为NUMA影响,夸NUMA存在使用服务器上所有CPU,建议使用NUMA架构时部署与其个数相同的TiDB节点

  2. 增大并发压力、且相关配置都合理,但整体性能未提升
    建议检查客户端和Proxy是否存在瓶颈

学习过程中参考的其他资料

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

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

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

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