1、为什么要全链路压测
有时候,单个系统的也测并不能准确的表达出全链路的性能,尤其是QPS 比较高的场景;如果不进行全链路压测,只要链路中一个系统挂掉,就会引起整个链路的崩溃。全链路压测,一方面能够各个服务知道自己的承压极限在哪;另一方面,让各个系统能够明确优化目标并找出性能瓶颈,同时对于一些特殊环节可以通过临时增加公有云的方式来提高整体的性能;
2、全链路压测的难题
1) 涉及的系统太多,牵扯的开发人员太多
2)模拟的测试数据和访问流量不真实
3)压测生产数据未隔离,影响生产环境
3、如何分析全链路压测
1)分析需要压测的业务场景和设计系统
2)协调各个系统的压测资源
3)压测环境,一般全链路压测都是生产环境,或者是预发环境;存在的风险是》系统风险,不能因为压测把系统搞宕机影响到日常生产环境的正常运营;》数据风险,需要考虑将请求和访问、业务数据处理都进行隔离,防止影响到生产环境。
4)压测数据,压测数据准备有两方面数据需要准备,一方面是压测请求数据的准备,需要模拟请求数据,最好的办法是直接录制线上真实数据,进行清洗;另一方面是测试数据的准备,比如压测需要的虚拟商品的数据、虚拟商品库存数据、虚拟供货商、虚拟用户。
5)压测数据隔离。
3、全链路压测瓶颈优化
1)优化单个业务系统,考虑单个业务系统的优化,比如IO,数据读写等,通常内存缓存>文件>数据库>网络
2)优化相关路径,通过全链路监控发现整个业务流程在哪个节点耗时最长,在这些关键路径的性能提升优化。
3)优化业务流程,这个需要从系统设计和业务架构上着手,比如减少rpc调用,减少服务依赖等。