运行基准测试并分析结果
一旦准备就绪就可以着手基准测试收集和分析数据了
通常来说自动化基准测试是个好主意这样做可以获得更精确的测试结果因为自动化的过程可以防止测试人员偶尔遗漏某些步骤或者误操作另外也有助于归档整个测试过程
自动化的方式有很多可以是一个Makefile 文件或者一组脚本脚本语言可以根据需要选择shellPHPPerl 等都可以要尽可能地使所有测试过程都自动化包括装载数据系统预热执行测试记录结果等
一旦设置了正确的自动化操作基准测试将成为一步式操作如果只是针对某些应用做一次性的快速验证测试可能就没必要做自动化但只要未来可能会引用到测试结果建议都尽量地自动化否则到时候可能就搞不清楚是如何获得这个结果的也不记得采用了什么参数这样就很难再通过测试重现结果了
基准测试通常需要运行多次具体需要运行多少次要看对结果的记分方式以及测试的重要程度要提高测试的准确度就需要多运行几次一般在测试的实践中可以取最好的结果值或者所有结果的平均值亦或从五个测试结果里取最好三个值的平均值可以根据需要更进一步精确化测试结果还可以对结果使用统计方法确定置信区间(confidence interval)等不过通常来说不会用到这种程度的确定性结果注只要测试的结果能满足目前的需求简单地运行几轮测试看看结果的变化就可以了如果结果变化很大可以再多运行几次或者运行更长的时间这样都可以获得更确定的结果
获得测试结果后还需要对结果进行分析也就是说要把数字变成知识最终的目的是回答在设计测试时的问题理想情况下可以获得诸如升级到 核CPU 可以在保持响应时间不变的情况下获得超过% 的吞吐量增长或者增加索引可以使查询更快的结论如果需要更加科学化建议在测试前读读null hypothesis 一书但大部分情况下不会要求做这么严格的基准测试
如何从数据中抽象出有意义的结果依赖于如何收集数据通常需要写一些脚本来分析数据这不仅能减轻分析的工作量而且和自动化基准测试一样可以重复运行并易于文档化下面是一个非常简单的shell 脚本演示了如何从前面的数据采集脚本采集到的数据中抽取时间维度信息脚本的输入参数是采集到的数据文件的名字
假设该脚本名为analyze当前面的脚本生成状态文件以后就可以运行该脚本可能会得到如下的结果
第一行是列的名字第二行的数据应该忽略因为这是测试实际启动前的数据接下来的行包含Unix 时间戳日期时间(注意时间数据是每 秒更新一次前面脚本说明时曾提过)系统负载数据库的QPS(每秒查询次数)五列这应该是用于分析系统性能的最少数据需求了接下来将演示如何根据这些数据快速地绘成图形并分析基准测试过程中发生了什么
返回目录高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
Oracle索引技术