本文介绍线上业务压测的核心要素、压测环境和压测基础数据。
业务压测的目标
要达成精准衡量业务承接能力的目标,业务压测就需要做到5个一样:
一样的线上环境。
一样的用户规模。
一样的业务场景。
一样的业务量级。
一样的流量来源。
做到5个“一样”,让系统提前进行“模拟考”,从而达到精准衡量业务模型实际处理能力的目标,便于相应的性能提升、限流降级方案准备等配套工作。
业务压测的核心要素
业务压测需要有以下五大核心要素:
压测环境和压测基础数据
全新生产环境
如果是刚迁移到云上或者是新的机房,全链路的进行业务压力测试之后可以正式投产的,这种验证效果较好,因为最终就是真实的性能环境,一般可以将真实的生产环境数据进行脱敏导入,确保业务数据量(交易数据、流水、各种业务核心业务记录等)维持在半年以上,同时确保数据的关联完整性(包括跨系统的业务完整性数据),压测基于这些基础数据进行相应的核心业务的流量(登录、购物车行为、交易行为等)构建,最后在投产前做相应的数据清理再初始化一次存量基础数据。
等比性能环境
一般是指在生产环境单独划分区域,准备等比的容量,共享接入层的性能测试环境。这种方案缺点是成本较高,优点是方案简单、风险可控,容量规划较为精准。
说明必须保证有共享的接入层(CDN动态加速、BGP、WAF、SLB、4层7层负载均衡等等,确保最重要的网络接入层相同,能发现问题)。
后端的服务容量配比上至少保证是生产环境的1/4,因为与生产环境服务容量越接近,精准度越高,所以数据库建议能相同配置。
在基础数据的准备上和上面全新生产环境的方法一致。
生产环境
生产环境上基础数据基本分为两种方式,一种是数据库层面不需要做改造,直接基于基础表里的测试账户(相关的数据完整性也要具备)进行,压测之后将相关的测试产生的流水数据清除(清除的方式可以固化SQL脚本或者落在系统上);另一种就是压测流量单独打标(如单独定义的Header),然后业务处理过程中识别这个标并传递下去,包括异步消息和中间件,最终落到数据库的影子表或者影子库中。此外,生产环境的压测尽量在业务低峰期进行从而避免影响生产的业务,无论上述哪种方式都可以通过部署单独的压测专用集群来进一步避免对生产业务的影响。
关于业务的挡板
一般生产环境的业务压测还会涉及到和第三方的交互,如短信、支付和渠道对接等等。 最后,关于方案的选择请结合实际的情况如人力资源、机器资源、时间成本、业务复杂度、业务要求和后续的维护成本综合考虑最适合自身的方案。