如何用sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间
概述
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
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
3、生成图片
./sysbench-graph.sh /home/sysbench/logtps.data /home/sysbench/tps.jpg
./sysbench-graph.sh /home/sysbench/logqps.data /home/sysbench/qps.jpg
4、TPS和QPS效果图:
5、分析tpmc(每分钟事务数)
log_buffer=64M,innodb_buffer_size=6G,Log_file=256M时;
测试并发数分别取2、100、200、300、500对应的TpmC值(总的事务数/1800s/60)
(当并发数达到800后,TPCC测试会导致数据库崩溃)
结果:
6、分析响应时间(avg)值
log_buffer=64M,innodb_buffer_size=6G,Log_file=256M时;
测试并发数分别取2、100、200、300、500对应的avg值
结果:
三、基准测试总结
通过使用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压测脚本,感兴趣的朋友可以关注下~