课程名称:2.3.4 How to Benchmark(如何对 TiDB 进行基准测试)
学习时长:
50分钟
课程收获:
了解如何对 TiDB 进行性能测试
课程内容:
一、测试建议
- 实例硬件选择
- TiDB实例:选用高性能CPU
- TiKV实例:建议不少于三个、需要配备高性能SSD,CPU建议16C及以上,内存总大小不低于单机数据量的10%
- PD实例:需要SSD,不需要太多的CPU和内存(4C16GB)
-
TiDB并发数控制在500以内,否则建议增加TiDB节点
-
使用多个TiDB
- 在每个TiDB上运行,将结果累加计算出结果
- 前端部署HAProxy等工具进行测试
- 配置
- 首先建议参考官网相关的配置,视测试环境进行相应调整
- 进一步调优参考TiKV相关文档
二、Sysbench工具
-
安装配置文件
-
创建测试库
create database sbtest;
-
Auto retry
$ set global tidb_disable_txn_auto_retry = off;
TiDB4.0之前使用的是乐观事务需要开启,以免造成事务冲突导致测试失败。 -
prepare
$ sysbench --config-file=config oltp_point_select --tables=16 --table-size=10000000 prepare -
Analyze table
ANALYZE TABLE sbtest7;
- Warm up data by select
SELECT COUNT(pad) FROM sbtest7 USE INDEX (K_7);
-
Run benchamrk
$ sysbench --config-file=config oltp_read_write --tables=16 --table-size=10000000 run --threads=64 -
建议导入数据后将相应数据备份,保证每次测试都使用相同数据进行
三、TPC-C
-
安装
-
配置
-
创建测试库
create database tpcc;
-
Auto retry
$ set global tidb_disable_txn_auto_retry = off; -
Initial tpcc tables
$ cd run && ./runSQL.sh props.mysql sql.mysql/tableCreates.sql &&\ ./runSQL.sh props.mysql sql.mysql/indexCreates.sql -
Run tpcc load
$ ./runLoader.sh props.mysql -
Run Benchmark
$ ./runBenchmark.sh props.mysql -
结果
主要看tpmC(NewOrders) -
Check consistentency(Optional)监测正确性
$ ./runSQL.sh props.mysql sql.common/test.sql
四、常见问题
- 增大并发TiKV CPU利用率低
- 检查写入是否有热点
- 通过TiKV Thread CPU Panel检查TiKV是否存在某个模块到达CPU瓶颈
-
增大并发TiKV没有到达CPU使用瓶颈,TiDB的CPU仍然很低
考虑是否因为NUMA影响,夸NUMA存在使用服务器上所有CPU,建议使用NUMA架构时部署与其个数相同的TiDB节点 -
增大并发压力、且相关配置都合理,但整体性能未提升
建议检查客户端和Proxy是否存在瓶颈


