绘图的重要性
如果你想要统治世界就必须不断地利用阴谋注而最简单有效的图形就是将性能指标按照时间顺序绘制通过图形可以立刻发现一些问题而这些问题在原始数据中却很难被注意到或许你会坚持看测试工具打印出来的平均值或其他汇总过的信息但平均值有时候是没有用的它会掩盖掉一些真实情况幸运的是前面写的脚本的输出都可以定制为gnuplot或者R绘图的数据来源假设使用gnuplot假设输出的数据文件名是QPSperseconds:
gnuplot>plot QPSperseconds using w lines title QPS
该gnuplot 命令将文件的第五列qps 数据绘成图形图的标题是QPS图 是绘制出来的结果图
下面我们讨论一个可以更加体现图形价值的例子假设MySQL 数据正在遭受疯狂刷新(furious flushing)的问题在刷新落后于检查点时会阻塞所有的活动从而导致吞吐量严重下跌% 的响应时间和平均响应时间指标都无法发现这个问题也就是说这两个指标掩盖了问题但图形会显示出这个周期性的问题请参考图
图 显示的是每分钟新订单的交易量(NOTPMneworder transactions per minute)从曲线可以看到明显的周期性下降但如果从平均值(点状虚线)来看波动很小一开始的低谷是由于系统的缓存是空的而后面其他的下跌则是由于系统刷新髒块到磁盘导致如果没有图形要发现这个趋势会比较困难
这种性能尖刺在压力大的系统比较常见需要调查原因在这个案例中是由于使用了旧版本的InnoDB 引擎髒块的刷新算法性能很差但这个结论不能是想当然的需要认真地分析详细的性能统计在性能下跌时SHOW ENGINE INNODB STATUS的输出是什么?SHOW FULL PROCESSLIST 的输出是什么?应该可以发现InnoDB 在持续地刷新髒块并且阻塞了很多状态是waiting on query cache lock的线程或者其他类似的现象在执行基准测试的时候要尽可能地收集更多的细节数据然后将数据绘制成图形这样可以帮助快速地发现问题
返回目录高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
Oracle索引技术