基准测试是针对系统设计的一种压力测试,通常目标是为了掌握系统的行为。
为什么要基准测试?
- 验证基于系统的一些假设,确认这些假设是否符合实际情况。
- 重现系统中的某些异常行为,以解决这些异常。
- 测试系统当前运行情况。如果不清楚系统当前的性能,就无法确认某些优化的效果如何。也可以利用历史的基准测试结果来分析诊断一些无法预测的问题。
- 模拟比当前系统更高的负载,以找出系统随着压力增加而可能遇到的扩展性瓶颈。
- 规划未来的业务增长。
- 测试应用适应可变环境的能力。
- 测试不同的硬件、软件和操作系统配置。
- 证明新采购的设备配置是否正确。
我们只进行大概的压力测试,来确定系统大致的余量有多少。
基准测试策略
- 针对整个系统的整体测试(集成式)
用户关注的是应用整体(web服务器、代码、网络、数据库)的性能。 - 单独测试MySQL(单组式)
测试指标
- 吞吐量
单位时间内的事务处理数。 - 响应时间或延迟
测试任务所需的整体时间。 - 并发性
在任意时间有多少同时发生的并发请求。
并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数或者连接数 - 可扩展性
可扩展性指的是,给系统增加一倍的工作,在理想情况下就能获得两倍的结果(即吞吐量增加一倍)
基准测试工具
集成式测试工具
- ab
- http_load
- JMeter
单组件式测试工具
- mysqlslap
- MySQL Benchmark Suite
- Super Smack
- Database Test Suite
- Percona’s TPCC-MySQL Tool
- sysbench