“双11前最后一次全链路压测,所有技术、系统、安全策略与应急预案被一一演练。流量峰值,一秒内有几千万次请求,这意味着一秒会产生数百万次交易。"这是2018年阿里双十一前夕战况。随着互联网的发展与各种新业务的出现,全链路压测将被应用到更多的日常场景中去,那么为什么这些企业都需要全链路压测呢?
一、为什么需要全链路压测?
早先的时候,压测并不是针对业务的全链路来开展的,而是采用了“各个击破”的原则,即对生产环境中的单机或者单系统进行独立的压测。单系统独立压测模拟海量请求主要有两种实现方式:
1、根据设计的压力来直接模拟大量的并发调用;
2、先获取线上真实的流量请求,然后经过数据清洗再回放模拟大量的并发调用。
单系统独立压测的弊端在某大型活动例如秒杀放开的瞬间,从CDN、网关接入、前端、缓存、中间件、后端服务、数据库整个交易链路都会面临巨大的访问压力,这个时候系统服务除了受自身的影响外,还依赖于其他关联系统的影响,并且该影响会一直蔓延,只要有一个节点出现故障,那么故障在上下游系统经过层层累加后造成的影响将难以追溯。
现阶段的全链路压测在真实的生产环境上以真实的量级去模拟真实的业务操作,并以此来衡量系统的实际承载能力,或者找出系统的瓶颈点。
这样的好处是在大促前夕就能在线上环境进行真实模拟,以此改进修复自身系统的不足,从而保障系统在流量的冲击下保持稳定。随着近几年的电商不断发展,一些如“双11”“双12”“618”等等大促日如雨后春笋般冒了出来,于是基于真实的生产环境来模拟海量的并发用户请求和数据,就显得十分必要了。
二、全链路压测能解决什么问题?
随着移动互联网、云计算、物联网等技术的不断发展,应用架构也变得更加离散和复杂,一个应用的高稳定性不仅需要自身系统的稳健,同时也更加依赖网络、第三方服务的质量,而这些外部的"不确定"因素让稳定性变得更加"不可控"。在这种"不可控"的复杂环境中,如何保障高并发条件下的应用性能稳定性,需要解决以下问题:
1、高流量下的系统稳定性不足,如易崩溃、卡顿等问题;
2、新代码上线的性能基线比对,如RT、CPU load、数据库性能比对等;
3、不知道该如何合理配置机器配置和数量,多配或少配等问题;
4、系统日常运行不稳定,时不时宕机、服务不可用等问题;
5、代码变化频繁,几经易手后,架构混乱、难梳理等问题;
6、对于运行的情况不清楚,不知道当前性能健康程度如何的问题;
当然全链路压测的过程中显然不止这些问题,以上列举的六点可能是大多数客户关心的,仅作示例参考
以物流行业的订单链路来说,通常会包含渠道下单、调度、开单、建包&解包、分拣、装车、补码、派送等环节。而全链路压测的主要作用就是通过模拟超大流量冲击链路上的这些节点,观察链路在流量峰值时的表现和故障情况,来发现链路流程上的瓶颈或性能问题。
三、如何开展全链路压测?
很多公司想尝试做全链路压测却不知从哪里入手,接下来介绍一下普遍的全链路压测的流程,从准备阶段到开展部署实施到最后的上线。
压测前:
压测范围:明确压测目标、梳理压测链路
业务系统改造:业务系统接入压测探针进行压测改造
压测方案:制定整个压测计划、压测数据构造、压测流程、紧急预案、监控指标等
压测管理:压测相关配置,如:压测任务、施压配置、SLA配置、压测指标配置等
压测验证:验证压测是否按照预期正常运行
压测中:
压测实施:执行压测任务、观察压测中运行状态等
压测监控:关注基础监控、业务监控等
紧急处理 :压测中遇到的紧急问题处理如:数据污染、压测标识丢失、集群告警等
压测后:
压测报告:压测后产生的压测性能分析报告
压测数据清理:将压测数据还原到压测之前,为下次压测作准备
压测复盘:复盘整个压测过程中的问题,提升压测效率
其实进行全链路压测对于整个公司技术要求还是很高的,如果没有一定能力的公司最好不要贸然尝试,因为如果没做好可能会把生产环境搞宕。对于目前的绝大部分企业来说,选择有实力的第三方的服务公司已经是当下最优的选择,这里面存在人员成本、专业程度以及效率质量等多方面问题,可以说越专业的服务公司就有着越高的技术能力,更有着丰富的技术实践经验和对客户需求的深刻理解。
四、Forcecop在全链路压测方面的优势
1、不需要对系统代码进行改造
因为对市面上主流的中间件都做了兼容支持,业务团队只需要将Agent协助部署到应用系统中,就可以完成全链路的梳理和接入了。
2、压测数据与正式数据的安全隔离
通过给压测流量染色、白名单核验机制、压测试跑,Agent会识别压测流量并对压测流量进行特定逻辑处理,将产生的压测数据存储到影子库表里,从而实现了与正常的业务数据的物理隔离。
3、低性能损耗
据我们以往经验,整套Agent植入后只会占用机器3%~5%的性能资源,而且产品特地设计了开关控制,可以全局控制压测是否需要启动。在不需要压测时候关闭压测,这样就可以实现几乎0性能损耗。
4、自动梳理链路
应用链路往往复杂而多变,人工梳理费时费力准确度还不高。但准确的链路关系却是全链路压测实施的前提。因此数列全链路压测产品提供自动化的链路梳理功能,自动识别应用入口下的所有链路信息,告别人工梳理链路时代。
5、智能SLA警示/终止
即使做好万全准备,压测仍不能避免万无一失,数列全链路压测产品提供智能SLA规则,提前设置好预警与终止规则,当压测过程中触发SLA规则时,系统会自动进行警示或立即终止压测,防止造成额外损失。
6、压测报告
压测报告有针对性的对业务活动指标进行描述,如性能警告、请求总数、最大并发数、TPS、平均RT、SA等,对不同的业务活动进行实际与目标值对比,对峰值情况进行说明。绘制压测业务场景的TPS、平均RT、请求成功率实时趋势走向图。
7、可视化控制台
目前控制台的功能(压测自动化)包含压测配置、压测控制、压测实况、压测报告、链路梳理、压测管理、性能监控、性能分析等模块,用户仅通过页面点击即可完成一系列的压测配置,一站式全自助进行性能环境或者生产环境下的全链路压测。