1.基准测试与性能分析
基准测试和性能分析是发现系统瓶颈的两基本方法:
基准测试用来测量衡定系统的整体性能,这有助于判断系统的处理能力,提示影响或不影响系统性能的因素,也可以用来提示应用在处理不同数据时的性能表现。
分析有助于发现应用在什么地方花费了最多时间,或者消耗了最多资源。
基准测试可帮你达成的目标:
- 测试当前应用的运行状况。
- 验证系统的扩展性。如模拟高负载状态,检测处理能力。
- 为未来的业务增长进行规划。
- 测试应用适应可变环境的能力。
- 检测在不同硬件、不同软件、不同操作系统下配置下的性能表现。
一般的测试指标有下面几种:
- 每时间单位的事务处理量
- 响应时间或时延
- 扩展性
- 并发性
测试时应该避免的一些错误:
- 使用真实数据的一个子集,而不是全集。例如应用需要数百GB数据,但测试只用了1GB。
- 使用错误的分布式数据。
- 使用非真实的分布参数。
- 在多用户应用中使用单用户想定进行测试。
- 在单服务器上测试一个分布式应用。
- 与真实用户行为不匹配。
- 循环运行同一个查询。真实的查询是不相同的。
- 忽略错误检查。
- 使用默认的服务器设置。
集成测试工具:
- ab
- http_load
- jmeter
单组件式测试工具:
- mysqlslap
- sysbench
- database test suite
- mysql benchmark suite(sql-bench)
- super smack
mysql 有一个很方便的benchmark()函数,可以测试某种具体数据库操作的执行效率,
可以为函数指定一个测试循环次数和被测试的表达式。表达式可以 是任何标量表达式,例如,一个标题子积善余庆或函数。对于比较某些操作的处理性能,这个函数是很方便
的,例如可以用它来评估md5()函数是否比sha1()函数快:
mysql>set @input := 'hello world';
mysql>select benchmark(1000000,md5(@input));
+---------------------------------------+
| benchmark(1000000,md5(@input)) |
+---------------------------------------+
| 0 |
+---------------------------------------+
1 row in set (2.78 sec)
mysql>select benchmark(1000000,sha1(@input));
+---------------------------------------+
| benchmark(1000000,sha1(@input)) |
+---------------------------------------+
| 0|
+---------------------------------------+
1 row in set (3.50 sec)
函数的返回值永远是0;可以用它获得客户应用在执行查询时的不同计时结果。
虽然benchmark()使用很方便但一般不使用它来完成一种实际的基准测试。因为它很难
合计出真正要测试的结果。它也中能很狭隘地用于整体测试过程中的一小部分。
。。先写到这。