课程名称:课程版本(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、准备配置文件
Mysql:测试的数据库
Time:测试的时间
Threads:并发连接数
B、测试数据的导入
1 ) 创建测试数据库
2 ) 如果使用乐观事务,打开auto retry
4.0之前默认是乐观事务(可能会有事务冲突,报错会直接崩掉,导致测试失败)
4.0之后默认是悲观事务
3 ) 使用配置文件运行sysbench进行加载
C、运行测试
1 ) 通过Analyze命令来收集各个表的统计信息,有助于优化器选择更为准确的执行器来提高性能
2 ) 进行数据预热,建议每次重启集群后进行一次预热
3 ) 运行
需要跑多次不同的并发,为了保证每一轮的数据规模一致,建议导入完数据之后先备份,TiKV+PD的数据和目录保存下来
在进行下一轮测试之前,先停止集群,用备份覆盖,启动,再运行下一次测试
D、测试结果
三、TPC-C
1、概念
是一个复杂的联机交易模拟系统,模拟场景接近于电商平台
使用商品销售模型进行五类事务
A、新订单的生成
B、订单支付
C、订单查询
D、订单配送
E、库存分析
仓库数量越少,事务冲突越严重
2、构建
3、配置
Warehouse:仓库数量
Terminals:交易的终端数,即并发数
loadWorkers:导入数据的并发数
4、加载
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是否存在瓶颈