前言:压测的具体方法有很多种,工具也有很多,但是压测要遵循的原则可以是不变的。万变不离其宗,制定好压测规范和原则,每次压测前问下自己,为什么要进行压测,我们预期的结果是什么样的,然后就可以开始操作了
一、我们为什么要进行压测
压测的目的无外乎测试新版本的性能、新功能、新机器的性能、新硬盘的性能、某些OS或DB层面的参数的影响 、不同场景下的性能等,我们压测就是要评估出数据库和业务的性能瓶颈,方便进行容量和性能规划,在业务高峰期来临前,提前做好预案。
二、压测模型设计
在设计压力测试模型之前,我们必须要知道压力测试的目的;用控制变量的原则,来排除其他的干扰因素,每次控制一个变量;压测环境尽量和线上环境一致,增加数据可参考价值;每个变量压测应不少于三次,然后取其平均值作为压测数据
三、压测注意事项
尽量远程进行压力测试:排除压测工具对系统的开销和网络带宽的影响
压测数据要合理: 压测数据应大于MySQL Buffer,要考虑大字段的影响
压测时间要合适:压测前要进行预热,预热后压测时常不小于30分钟,真实场景可以更长
压测的时候系统负荷不要太大或太小:保证压测结果接近生产真实环境
压测结束后要净化环境:清除系统和DB层的缓存,防止影响下次压测结果
四、压测需要关注的指标
系统层:
CPU :%user、%sys、%idle、%iowait
load :
IO :util%、awai%
Mem:memused、swap(开的可以看下)
带宽 :recv , send
DB层:
TPS、QPS、RT、LT、SE、FL、RT
五、压测工具的选择
常用的测试工具有sysbench、tpcc-mysql、tcpcopy等,没有最好的工具,只有最适合你的工具和你最熟悉的工具
六、压测结果的量化
在相同压测基线下,业务的变化情况汇总。可以以图表的形式展现
为了方便大家交流,本人开通了微信公众号(关注看更多精彩)和QQ群,QQ群1(291519319)和QQ群2(659336691)。喜欢技术的一起来交流吧