全链路压测是基于真实的生产环境来模拟海量的并发用户请求和数据,对整个业务链路进行压力测试,试图找到所有潜在性能瓶颈并持续优化。
全链路压测技术难点:
*海量并发请求的发起
*全链路压测流量和数据的隔离
*实际业务负载的模拟
*真实交易和支付的撤销以及数据清理
- 海量并发请求的发起
海量会超过1000万次以上请求的压力量级,loadrunner难以满足,因为loadrunner按照并发用户数收费,而且loadrunner本身很难支持千万级乃至亿级的海量并发请求,所以采用Jmeter
##Jmeter 要解决问题
*采用分布式JMeter方案,并发请求数量也会存在上限。master节点会成为发起整个压测的瓶颈,所以可以采用jenkins Job 单独调用jmeter 节点来控制和发起压力测试。
*测试脚本,测试数据和测试结果在分布式Jmeter环境存在分发问题.解决方案基于Jmeter搭建一个压测框架,诸如脚本分发,数据分发以及结果回传等工作
*流量发起地域要求不同,多个城市的数据中心搭建Jmeter slave
##全链路压测流量和数据的隔离
全链路压测在实际生产环境上执行,以防压测的流量和数据污染 干扰真实的生产环境,需要对压测流量进行特殊的数据标记,同时写入数据库中的数据也必须带有这种类型的标记以便区分数据,或直接采用专门的影子数据库来存储压测的数据。
##实际业务负载的模拟
难点:要估算负载的总体量级
*需要详细了解总负载中各个操作的占比情况以及执行频次
通常做法:录制已有的实际用户负载,然后做2种操作:
1.录制数据清洗,将录制得到的真实数据统一替换成为压测准备的数据。
2.基于用户模型,在全链路压测过程中,将比例放大录制脚本的负载
##真实交易和支付的撤销以及数据清理