如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

Henryztong 2019-11-20

概述

sysbench是基于LuaJIT的可以脚本化多线程基准。 它是一个模块化的、跨平台、多线程基准测试工具,最常用于数据库基准测试,但也可以用于创建不涉及数据库服务器的任意复杂工作负载。

前面我们已经用sysbench在生产环境做了压测并得到了一些数据,下面主要是介绍怎么来做数据分析。


一、压测环境

生产环境:

MySQL服务器IP地址:xx.xx.xx.xx

操作系统:CentOS Linux release 7.3.1611 (Core)

CPU:4核

内存:8G

硬盘:普通SAS硬盘

基线测试工具:sysbench


二、压测结果分析

1、分析tps

./analyze_tps.sh /home/sysbench/2_threads_64M_buffer_256M_logsize.log /home/sysbench/log2.data
./analyze_tps.sh /home/sysbench/100_threads_64M_buffer_256M_logsize.log /home/sysbench/log100.data
./analyze_tps.sh /home/sysbench/200_threads_64M_buffer_256M_logsize.log /home/sysbench/log200.data
./analyze_tps.sh /home/sysbench/300_threads_64M_buffer_256M_logsize.log /home/sysbench/log300.data
./analyze_tps.sh /home/sysbench/500_threads_64M_buffer_256M_logsize.log /home/sysbench/log500.data
paste /home/sysbench/log2.data /home/sysbench/log100.data /home/sysbench/log200.data /home/sysbench/log300.data /home/sysbench/log500.data > /home/sysbench/logtps.data

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

2、分析qps

./analyze_qps.sh /home/sysbench/2_threads_64M_buffer_256M_logsize.log /home/sysbench/logqps2.data
./analyze_qps.sh /home/sysbench/100_threads_64M_buffer_256M_logsize.log /home/sysbench/logqps100.data
./analyze_qps.sh /home/sysbench/200_threads_64M_buffer_256M_logsize.log /home/sysbench/logqps200.data
./analyze_qps.sh /home/sysbench/300_threads_64M_buffer_256M_logsize.log /home/sysbench/logqps300.data
./analyze_qps.sh /home/sysbench/500_threads_64M_buffer_256M_logsize.log /home/sysbench/logqps500.data
paste /home/sysbench/logqps2.data /home/sysbench/logqps100.data /home/sysbench/logqps200.data /home/sysbench/logqps300.data /home/sysbench/logqps500.data > /home/sysbench/logqps.data

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

3、生成图片

./sysbench-graph.sh /home/sysbench/logtps.data /home/sysbench/tps.jpg

./sysbench-graph.sh /home/sysbench/logqps.data /home/sysbench/qps.jpg

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间


4、TPS和QPS效果图:

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

5、分析tpmc(每分钟事务数)

log_buffer=64M,innodb_buffer_size=6G,Log_file=256M时;

测试并发数分别取2、100、200、300、500对应的TpmC值(总的事务数/1800s/60)

(当并发数达到800后,TPCC测试会导致数据库崩溃)

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

结果:

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

6、分析响应时间(avg)值

log_buffer=64M,innodb_buffer_size=6G,Log_file=256M时;

测试并发数分别取2、100、200、300、500对应的avg值

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

结果:

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间


三、基准测试总结

通过使用sysbench基线测试工具对配置为4核8G的虚拟机进行压力测试可以发现,

在buffer_pool=6G,log_file=256M,log_buffer=64M一定的情况下,并发=100时,测试得到最佳性能。在该环境下

  • TPS≈900
  • QPS≈30000
  • 单次响应时间(avg)≈114ms
  • TpmC≈52605

采用sysbench测试,并发数在达到800后MySQL崩溃。

注意:

1)尽量不要在MySQL服务器运行的机器上进行测试,一方面可能无法体现网络(哪怕是局域网)的影响,另一方面,sysbench的运行(尤其是设置的并发数较高时)会影响MySQL服务器的表现。

2)可以逐步增加客户端的并发连接数(--thread参数),观察在连接数不同情况下,MySQL服务器的表现;如分别设置为10,20,50,100等。

3)一般执行模式选择complex即可,如果需要特别测试服务器只读性能,或不使用事务时的性能,可以选择simple模式或nontrx模式。

4)如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。


到这里关于sysbench的内容就介绍完成了,后面有空会整理一些sysbench压测脚本,感兴趣的朋友可以关注下~

如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间

相关推荐