- A+
前言
其实MySQL基线测试已经不是什么新鲜的话题了,这应该是作为DBA的基本的技能了。大家都知道使用一些工具去做(sysbench、tpcc-mysql、tpc-c等等)。本篇文章不是告诉你相关的工具具体怎么用,更不是告诉你工具输出的报告应该如何去看,这些在现在的互联网中一搜一大把。本篇文章告诉你的是一个流程,做一个测试我们需要做一些什么、如何提取我们需要的信息,并生成可视化报告。在之后的监控我们就可以使用输出的报告作为基准,从而来定位问题和瓶颈。
收集数据的重要
测试最重要的就是在测试过程中收集的数据,各个方面的数据越多对以后的参照对比越有利。比如收集磁盘IO、CPU、网络情况等等。如果少收集了相关资源数据很可能在以后就不知道相关资源的瓶颈。如你没有收集IO资源的使用变化情况。你就不知道你的MySQL的写能力到达什么时候是个瓶颈,就不知道要如何去预防了。
我使用的工具
- tpcc-mysql:Percona的一款流行的开元的测试工具。(当然也可以使用sysbench,这里建议使用sysbench 5,有很多新的特性)。
- orzdba:阿里的一款监测MySQL相关性能的工具。
- nmon:IBM的一款搜集监测IO、CPU等信息的工具。
- nmon analyser:和nmon配套使用的分析工具。
- tpcc_report.py:笔者使用python编写的,用来分析tpcc-mysql测试完输出的信息并输出报表。
- orzdba_report.py:笔者使用python编写的,用来分析orzdba监控输出的数据并生成报表。
感谢那些为开源做贡献的团队们。向他们致敬! ^_^
由于笔者编写的Python脚本使用到了pandas和matplotlib,所以使用之前需要安装好这些模块。笔者为了方便没有去安装这些模块,而是使用Canopy这个免费版的集成套件,只要安装了他就能使用相关模块了。
软件版本:
软件 | 版本 | 说明 |
Canopy | 1.6.1-rh5-64 | |
Python | 2.7.10 | Canopy中自带的 |
测试步骤
1、使用tpcc-mysql加载数据到MySQL中
1 2 3 |
# 创建45个数据仓库并填充数据 ## |hostname:port| |dbname| |user| |password| |WAREHOUSES| ./tpcc_load 127.0.0.1:3306 tpcc45 root root 45 |
2、运行orzdba 收集mysql相关性能数据,生成log.xxxx-xx-xx收集数据文件
这边我对orzdba稍微做了些修改,为了获得更加连续的数据
修改 193 行为 if ( $mycount%100000000 == 0 ) {
1 2 3 |
./orzdba -mysql -innodb_rows -C 500000 -i 5 \ -S /u01/tmp/mysql.sock \ -L /tmp/orzdba.log -logfile_by_day & |
3、运行nmon收集相关数据,生成centos7_xxxxxx_xxxx.nmon收集数据文件
1 |
./nmon_x86_64_centos7 -s5 -c7200 -f -m /tmp/ |
4、运行tpcc-mysql进行测试
1 2 3 4 5 6 7 8 9 10 |
./tpcc_start -h127.0.0.1 \ -P3306 \ -dtpcc45 \ -uroot \ -proot \ -w45 \ -c32 \ -r30 \ -l3600 \ -ftpcc45_20150220 > /tmp/report_2016-02-21.log |
等待tpcc-mysql运行完以后我们就开始分析收集的数据来生成相关的报表了。
5、使用orzdba_report.py分析orzdba.log.xxxx-xx-xx文件生成报表
orzdba_report.py源码:orzdba_report
1 |
python orzdba_report.py orzdba.log.2016-02-21 |
查看生产的数据和图片
1 2 3 4 5 6 7 8 |
[root@centos7 tmp]# ll pic_2016-02-21_21-26-57 total 2044 -rw-r--r--. 1 root root 262490 Feb 21 21:27 -----bytes----.jpg -rw-r--r--. 1 root root 345998 Feb 21 21:26 -Hit%-.jpg -rw-r--r--. 1 root root 390717 Feb 21 21:27 ---innodb rows status---.jpg -rw-r--r--. 1 root root 318976 Feb 21 21:26 orzdba_report.xls -rw-r--r--. 1 root root 445983 Feb 21 21:26 -QPS- -TPS.jpg -rw-r--r--. 1 root root 317215 Feb 21 21:27 ------threads------.jpg |
使用图形工具打开'---innodb rows status---.jpg'分析图片文件
6、使用tpcc_report.py分析report_xxxx-xx-xx.log生产报表和图片
tpcc_report.py源码:tpcc_report
1 |
python tpcc_report.py report_2016-02-21.log |
查看生产的数据和图片
1 2 3 4 5 6 7 8 9 10 11 |
[root@centos7 tmp]# ll tpcc_2016-02-21_22-05-51 total 1636 -rw-r--r--. 1 root root 12531 Feb 21 22:05 90%respons_time.csv -rw-r--r--. 1 root root 446487 Feb 21 22:05 90%respons_time.jpg -rw-r--r--. 1 root root 5345 Feb 21 22:05 late_count.csv -rw-r--r--. 1 root root 375425 Feb 21 22:05 late_count.jpg -rw-r--r--. 1 root root 12611 Feb 21 22:05 max_respons_time.csv -rw-r--r--. 1 root root 429396 Feb 21 22:05 max_respons_time.jpg -rw-r--r--. 1 root root 38722 Feb 21 22:05 report_2016-02-21.log -rw-r--r--. 1 root root 7865 Feb 21 22:05 test_count.csv -rw-r--r--. 1 root root 327258 Feb 21 22:05 test_count.jpg |
使用图形工具打开' test_count.jpg '分析图片文件
7、使用nmon_analyser来分析centos7_xxxxxx_xxxx.nmon生产报表
注意:之前使用WPS打开nmon analyser v47.xlsm文件来分析的时候会报错,因此一直以来我就使用office2007了。不知道现在WPS能不能用了。
nmon analyser v47.xlsm分析出一个excel文件这个文件里面有分析的数据和图表。如下显示的是磁盘IO相关信息:
还有其他很多信息如CPU、NET等等的这边就不一一列举了。
结束语
MySQL基线测试并不是只是光光使用一下测试工具就行的了。重要的还是要能收集到竟可能多的信息。其实,只在MySQL层面做基线测试还是远远不够的。还应该在应用程序的层面来测试,从而查看MySQL的性能表现等等。
这边只是介绍了一下整个基线测试的基本流程,具体工具的使用还需要大家自行去了解了。
nmon相关文件:nmon_analyser_v47 、centos7_160221_2008、centos7_160221_2008.nmon(xls)
orzdba相关文件:orzdba.log、 pic_2016-02-21_21-26-57.tar
tpcc-mysql相关文件:report_2016-02-21、 tpcc_2016-02-21_22-05-51.tar
昵称:HH
QQ:275258836
ttlsa群交流沟通(QQ群②:6690706 QQ群③:168085569 QQ群④:415230207(新) 微信公众号:ttlsacom)
感觉本文内容不错,读后有收获?

18/04/2016 下午 4:15 沙发
rm -rf * 后
人生真是寂寥如雪……