内容简介:sysbench是一个基于多线程的测试工具,是一款专业的数据库benchmarks工具,当然它也可以测试cpu、memory、disk,不过目前的重点是数据库基准测试。通过sysbench测试,可以对数据库有更深刻的理解,从而进行性能调优,但不可能一步到位,需要进行迭代的测试,加上经验,从而得到更好的效果。sysbench官方文档不是特别好理解,这是一大缺点。
sysbench是一个基于多线程的测试工具,是一款专业的数据库benchmarks工具,当然它也可以测试cpu、memory、disk,不过目前的重点是数据库基准测试。
通过sysbench测试,可以对数据库有更深刻的理解,从而进行性能调优,但不可能一步到位,需要进行迭代的测试,加上经验,从而得到更好的效果。
sysbench官方文档不是特别好理解,这是一大缺点。
安装和基本参数
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench
语法:
sysbench [options]... [testname] [command]
其中testname是built-in test的名字,比如fileio, memory, cpu,对于数据库可以直接找到/usr/share/sysbench/tests/include/oltp_legacy目录下的 lua 文件,里面有很多 MySQL 测试用例。
command和testname有关,主要包含prepare(准备测试用例),run(具体测试),cleanup(清理),help。比如:
sysbench oltp_read_only help
options表示具体的参数,比如:
-
—threads:
表示启动的线程数
-
—events:
表示发送的请求数
-
—time:
表示总的执行时间
-
—rate:
每秒执行的总请求数 events (transactions)
-
—report-interval:
定期汇总统计数据
测试
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=10000000 --db-driver=mysql --mysql-db=test --mysql-user= --mysql-password= prepare sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=10000000 --db-driver=mysql --mysql-db=test --mysql-user= --mysql-password= --time=60 --events=500000 --threads=10 run --report-interval=5 >>sysbench.log
其中生成的测试表有1000万条记录,10个线程,另外-oltp-read-only=on表示只测试读,oltp是一个比较常见的测试,主要包含事务,数据库增删改查。
测试主要是参数优化前和优化后的数据对比,服务器配置是基本相同的。
结论
[ 5s ] thds: 10 tps: 1867.55 qps: 37383.21 (r/w/o: 26171.51/7474.60/3737.10) lat (ms,95%): 8.43 [ 10s ] thds: 10 tps: 1845.23 qps: 36899.85 (r/w/o: 25831.25/7378.13/3690.46) lat (ms,95%): 8.58 [ 15s ] thds: 10 tps: 1747.79 qps: 34956.77 (r/w/o: 24468.84/6992.35/3495.58) lat (ms,95%): 9.73 [ 20s ] thds: 10 tps: 1712.80 qps: 34255.44 (r/w/o: 23981.03/6848.81/3425.60) lat (ms,95%): 10.46 [ 25s ] thds: 10 tps: 1696.80 qps: 33930.40 (r/w/o: 23748.80/6788.20/3393.40) lat (ms,95%): 10.84 SQL statistics: queries performed: read: 1409366 write: 402676 other: 201338 total: 2013380 transactions: 100669 (1677.60 per sec.) queries: 2013380 (33552.05 per sec.) [ 5s ] thds: 10 tps: 432.05 qps: 8663.55 (r/w/o: 6067.86/1729.59/866.10) lat (ms,95%): 66.84 [ 10s ] thds: 10 tps: 439.01 qps: 8782.22 (r/w/o: 6147.15/1757.04/878.02) lat (ms,95%): 58.92 [ 15s ] thds: 10 tps: 499.20 qps: 9980.78 (r/w/o: 6987.19/1995.20/998.40) lat (ms,95%): 54.83 [ 20s ] thds: 10 tps: 502.60 qps: 10061.66 (r/w/o: 7044.44/2012.01/1005.21) lat (ms,95%): 51.02 [ 25s ] thds: 10 tps: 514.80 qps: 10297.21 (r/w/o: 7208.60/2059.00/1029.60) lat (ms,95%): 50.11 SQL statistics: queries performed: read: 422352 write: 120672 other: 60336 total: 603360 transactions: 30168 (502.53 per sec.) queries: 603360 (10050.59 per sec.)
1:threads越大,参数调整后的数据库qps和tps表现就更好(3倍,并发线程数是10),虽然cpu压力变大(主要是在积极的干活,负载接近10)。
2:通过MySQLTuner观察buffer利用率,这是最重要的指标。
[OK] InnoDB Read buffer efficiency: 99.99% (2475662828 hits/ 2475882691 total) [!!] InnoDB Write Log efficiency: 53.62% (23506385 hits/ 43841142 total) [OK] InnoDB Read buffer efficiency: 99.75% (2084860001 hits/ 2090165590 total) [!!] InnoDB Write Log efficiency: 48.16% (15492072 hits/ 32169426 total)
对于读buffer效率,看上去相差不大,但其实性能相差很大,而对于更新操作,大内存的优势就非常大了。
3:排序
对于 排序 来说,内存设置越大,磁盘I/O压力就越小。
Temporary tables created on disk: 0% (105 on disk / 780K total)
测试不是那么容易的,测试方法也是非常重要的,尤其对于实际的数据库应用(这是最难模拟的),基准测试就更难了,本文只是简单反映一些情况,但不可否认的是性能有了很大的提升,性能越高,并发性就越好。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 接口测试及常用接口测试工具
- 小程序入口构造工具 & 二维码测试工具
- VPS 常用测试方法和测试工具整理总结
- 说说分层测试中HTTP的API测试工具
- 性能测试工具Jmeter
- 性能测试工具Loadrunner
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
技术元素
[美] 凯文·凯利 / 张行舟、余倩、周峰、管策、金鑫、曾丹阳、李远、袁璐 / 译言·东西文库/电子工业出版社 / 2012-5 / 55.00元
我会将我不成熟的想法、笔记、内心争论、草稿以及对其他文章的回应都写在《技术元素》中,这样我就能知道自己到底在想些什么。——KK “技术元素”(technium)是凯文•凯利专门创造出来的词语。“技术元素不仅仅包括一些具象的技术(例如汽车、雷达和计算机等),它还包括文化、 法律、社会机构和所有的智能创造物。”简而言之,技术元素就是从人的意识中涌现出来的一切。KK把这种科技的延伸面看成一个能产生......一起来看看 《技术元素》 这本书的介绍吧!