基准测试(benchmark),是新手和专家都必须掌握的一项基本技能,是针对系统设计的一种压力测试。
1.1 为什么需要基准测试
基准测试,可以提前测试新系统在不同压力下的行为,评估系统容量,观察系统如何处理不同数据,观察系统异常行为,测试硬件是否满足要求,软硬件配置是否正确;
基准测试,测试结果只用于参考,因为毕竟不是真实生产环境,要留有余量;
基准测试,测试要尽量简单直接,结果之间容易比较,成本低且易于执行;
基准测试,实施时一定要搞清楚测试的原理,要了解如何分析结果代表的意义。
1.2 基准测试的策略
两种分类,集成测试、单组件测试;
集成测试,可以测试整个应用系统,包括Web服务器、代码、MySQL等,但很难实施;
测试指标,吞吐量(TPS每秒事务数)、响应时间或延迟(测试任务所需的整体时间)、并发性、可扩展性;
并发性,总被误认为是同时有多少人访问网站(Web服务器),实际上HTTP是无状态的,大多数用户只是简单地读取浏览器上显示的信息,也就是此时并没有发生请求,因此,并发性应该是指任意时间有多少同时发生的并发请求;
并发性,注意不要将创建数据库连接和并发性搞混,一个设计良好的应用,同时可以打开成千上万个MySQL数据库服务器连接,但可能同时只有少数连接在执行查询。因此,并发性是关注的是正在工作的并发操作,或者是同时工作的线程数连接数。
1.3 基准测试方法
先设计和规划基准测试,然后运行72小时以上,尽可能多的获取运行时的系统性能和状态数据(使用脚本自动收集)、学会分析结果、学会绘图(用图表达数据结果)。
1.4 基准测试工具
总体测试工具:ab、http_load、JMeter;
组件测试工具:mysqlslap、MySQL Benchmark Suite(sql-bench)、Super Smack、Database Test Suite、Percona's TPCC-MySQL Tool、sysbench。
重点学会:sysbench。
1.5 基准测试案例
sysbench工具:sysbench测试简单、结果有可比性,包括CPU基准测试、文件I/O基准测试(fileio)、OLTP基准测试;
Percona's TPCC-MySQL工具:可以模拟真实压力环境。
1.6 总结
至少学会sysbench,学会gnuplot绘图工具,眼睛比任何脚本和自动化工具都更有效。