热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

全链路压测应该怎么做?答案都在这里了!

“双11前最后一次全链路压测,所有技术、系统、安全策略与应急预案被一一演练。流量峰值,一秒内有几千万次请求,这意味着一秒会产生数百万次交易。这是2018年阿里双十一前夕战况。随着

“双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、可视化控制台
目前控制台的功能(压测自动化)包含压测配置、压测控制、压测实况、压测报告、链路梳理、压测管理、性能监控、性能分析等模块,用户仅通过页面点击即可完成一系列的压测配置,一站式全自助进行性能环境或者生产环境下的全链路压测。



推荐阅读
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
  • 协程作为一种并发设计模式,能有效简化Android平台上的异步代码处理。自Kotlin 1.3版本引入协程以来,这一特性基于其他语言的成熟理念,为开发者提供了新的工具,以增强应用的响应性和效率。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文详细介绍了进程、线程和协程的概念及其之间的区别与联系。进程是在内存中运行的独立实体,具有独立的地址空间和资源;线程是操作系统调度的基本单位,属于进程内部;协程则是用户态下的轻量级调度单元,性能更高。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 本文探讨了利用Python编程语言开发自动化脚本来实现文件的全量和增量备份方法。通过详细分析不同备份策略的特点,文章介绍了如何使用Python标准库中的os和shutil模块来高效地管理和执行备份任务。此外,还提供了示例代码和最佳实践,帮助读者快速掌握自动化备份技术,确保数据的安全性和完整性。 ... [详细]
author-avatar
希瑟小姐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有