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

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

学习时长:25min

课程收获:了解如何对 TiDB 进行性能测试

课程内容:

一、benchmark建议

1、实例硬件选择

TiDB:高性能CPU,计算业务
TiKV:16核+,内存大小不低于单机总数据量的百分之十
PD:不需要太高的CPU和(4C16G),最好有SSD,因为分配TSO需要写盘

2、单个TiDB

并发连接数控制在500以内

3、多个TiDB的话

使用 HAProxy之类的负载均衡工具
在TiDB每个节点上同时连接不同的测试客户端,并将结果汇总得到结果

4、配置

参考官网配置优化报告
参考TiKV优化

二、sysbench

1、概念

基于LuaJIT的性能测试工具,用于CPU,内存,线程,磁盘,数据库的性能测试
https://github.com/akopytov/sysbench

2、提供场景

oltp_insert:SQL插入语句
oltp_point_select:基于主键的点查询
oltp_update_index:更新索引的字段
oltp_update_non_index:更新无索引的字段
oltp_read_write:查询与写入操作

3、安装sysbench

A、准备配置文件

image
Mysql:测试的数据库
Time:测试的时间
Threads:并发连接数

B、测试数据的导入

image
1 创建测试数据库
2 如果使用乐观事务,打开auto retry
4.0之前默认是乐观事务(可能会有事务冲突,报错会直接崩掉,导致测试失败)
4.0之后默认是悲观事务
3 使用配置文件运行sysbench进行加载

C、运行测试

image
1 通过Analyze命令来收集各个表的统计信息,有助于优化器选择更为准确的执行器来提高性能
2 进行数据预热,建议每次重启集群后进行一次预热
3 运行
需要跑多次不同的并发,为了保证每一轮的数据规模一致,建议导入完数据之后先备份,TiKV+PD的数据和目录保存下来
在进行下一轮测试之前,先停止集群,用备份覆盖,启动,再运行下一次测试

D、测试结果

image

三、TPC-C

1、概念

是一个复杂的联机交易模拟系统,模拟场景接近于电商平台
使用商品销售模型进行五类事务
A、新订单的生成
B、订单支付
C、订单查询
D、订单配送
E、库存分析
image
仓库数量越少,事务冲突越严重

2、构建

image

3、配置

image
Warehouse:仓库数量
Terminals:交易的终端数,即并发数
loadWorkers:导入数据的并发数

4、加载

image
image
A、创建数据库
B、如果使用乐观锁,打开auto retry
C、初始化tpcc表
D、加载
E、运行
F、执行结果
G、检查一致性(可选)

四、测试中常见问题

1、更高的并发,为什么TiKV的CPU利用率还是很低?

检查负载是否均衡
写入是否有热点,写入是否均匀
检查TiKV模块上是否有CPU饱和(通过TiKV Thread CPU Panel监控CPU使用率)

2、增大并发TiKV没有到达CPU使用瓶颈,TiDB的CPU利用率依然很低

考虑是否因为NUMA影响,跨NUMA存在使用服务器上所有CPU,建议使用NUMA架构时部署与其个数相同的TiDB节点

3、增大并发压力、且相关配置都合理,但整体性能没有提升

建议检查客户端和Proxy是否存在瓶颈

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

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

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

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

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