基准测试是针对系统设计的一种压力测试
2.1 为什么需要基准测试
- 基准测试可以完成一系列工作, 具体见page35
- 在新系统正式上线到生产环境之前进行基准测试是一个好习惯
- 基准测试施加给系统的压力相对真是压力来说, 通常比较简单
- 基准测试要尽量简单直接, 结果之间容易相互比较, 成本低且易于执行
2.2 基准测试的策略
- 基准测试有两种主要的策略, 分别是集成式(full-stack) 以及单组件式(single-component), 在何种情况下运用不同的策略可以参考page37;
- 主要测试的指标有, 吞吐量(throughput), 响应时间或延迟(latency), 并发性(concurrence), 可扩展性(scalability), 归根结底就是测试那些对于用户来说最重要的指标;
2.3 基准测试的方法
- 要避免一些常见的错误, 比如 使用真实数据的子集而不是全集/与真实用户行为不匹配/忽略了系统预热(warm up)的过程, 具体见page40;
- 设计和规划基准测试, 第一步是提出问题并明确目标, 然后针对数据运行查询, 并且应该建立将参数和结果文档化的规范, 每一轮测试都必须进行详细记录;
- 获取系统性能和状态指标, 主要有CPU使用率, 磁盘I/O, 网络流量统计, SHOW GLOBAL STATUS计数器等, 可以通过shell脚本实现, 通过 awk 和 sed等脚本来简化操作
- 获取基准测试的结果, 在一般的测试实践中, 可以取最好的结果值,或者所有结果的平均值, 抑或从五个测试结果中取最好的三个值的平均值;
- 要直观地展现结果, 可以通过绘图, 书中提到了一个工具是gnuplot
2.4 基准测试工具
- 书中介绍的集成测试工具有: ab(Apache HTTP), http_load, JMeter
- 书中介绍的单组件式测试工具有: mysqlslap, MySQL Benchmark Suite(MySQL内置), Supter Smack, Database Test Suite, Percona's TPCC-MySQL Tool, sysbench, 具体介绍见page50