分类: 大数据
2017-01-03 14:23:11
2016年双11零点高峰的秒级创建达到17.5万,在这具有历史意义的数据背后,系统稳定性至关重要,稳定意味着决定一切。在稳定性保障过程中,有一个“模拟考”的重要角色,他的职责和内容就是确保狂欢节前的每一场‘考试’都能更高效地接近当天的场景,这个神秘的“模拟考”角色就是全链路压测模型,本文核心内容将为大家揭晓。
全链路压测背景
在日常性能测试中,一般在线下进行(部分请求在线上进行),多数为单机压测,其中会存在以下几个瓶颈:
从机器配置、依赖应用配置和能力、中间件的配置、DB配置等方面,线下环境和线上环境有巨大差异。
线下数据不丰富,覆盖面窄
单机单应用压测,无法评估整个链条的性能
线上集群能力评估不准确,通过单机能力评估线上集群能力,偏差较大
集群大压力下,瓶颈无法准确挖掘
为解决以上问题,需要进行几个事项:
将环境从线下迁移到线上、数据从线上批量同步获取、压测覆盖整体集群、全链条场景压测,如下图1所示
图1 压测转变过程图
通过以上环节便诞生了全链路压测,全链路压测概念如下节所述。
全链路压测概念
全链路压测是以全链路业务模型为基础,将前端系统、后端应用、中间适配层、DB存储层等整个系统环境,完整地纳入到压测范围中,形成全链路压测模型,以http请求为载体,模拟真实用户行为,在线上构造出真实的超大规模的访问流量,按照全链路模型施压,直至完成最接近用户行为的流量高峰压测,完成集群以及集群间能力压测并完成线上瓶颈挖掘。
即全链路压测主要包含以下几点:
1) 全链路压测业务模型为基础,形成全链路压测模型
2) http请求为载体
3) 模拟真实用户行为
4) 目标是得到线上集群真实容量和挖掘线上瓶颈
在全链路压测中,压测模型为核心,它决定了全链路压测的需求和目标,也决定了全链路压测的最终效果。
全链路压测整体流程
全链路压测整体流程(如图2所示),包含大促需求收集、业务范围确定、压测目标确定、压测场景制定、压测策略设计、模型预测、模型评审和定稿、模型构建、压测方案、压测执行、压测结果、压测结论。
其中压测策略指在压测过程中不同的验证内容,如限流验证、容灾验证、预案验证等
压测模型包含从需求采集到压测方案输出中的各个流程节点,通过这些节点的设计和采集,共同确定了整个全链路压测的范围和目标,并作为全链路压测的入口,产生压测模型、数据和方案。
图2 全链路压测流程图
全链路压测模型
一、全链路压测模型是各链路核心场景集合,建立在对用户行为分析和预测的基础上,按照模型构建数据和场景,形成压测方案,驱动压测执行,并最终拿到压测结果。全链路压测模型的层次结构如下图3所示。
图3 全链路压测模型层次图
全链路压测模型核心两点在于模型准确率和效率,模型准确率保证最终的压测效果能达到大促预期;模型效率高,保障模型快速运行和产出,确保全链路压测时效性,下面会结合准确率和效率来介绍全链路压测模型构建中的重要组成节点。
二、全链路压测模型准确率(更接近用户行为)
1) 模型预测
模型预测是通过分析以往数据,形成数据样本,并结合当前大促的业务玩法,调整入参权重,来实现未来大促模型预估。
全链路压测模型预测基于ARIMA算法来进行预测,通过从以往大促数据和日常数据中获取样本,通过ARIMA算法处理样本后,获取未来时刻的预测值。
模型预测框架图和预测算法实现流程图如图4和图5所示,今年全链路压测模型预测准确率高于90%
图4 模型预测方案图
图5 模型预测算法实现流程图