首页 > 其他分享 >全链路压测与普通压测的区别

全链路压测与普通压测的区别

时间:2023-08-23 11:07:16浏览次数:32  
标签:服务 容量 区别 压测 性能 限流 链路

一、前言

什么是全链路压测?全链路压测和平时做的普通压测有什么区别?全链路压测能为业务解决什么问题?如果你对全链路压测存在这些疑问,不妨通过本文一探究竟。

二、什么是全链路压测?

压测,即压力测试,是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。

全链路压力测试是指基于真实业务场景,通过模拟海量的用户请求,对整个后台服务进行压力测试,从而评估整个系统的性能水平。

全链路压测是可以在现网环境实施的尽可能模拟真实环境流量的场景化压测,通过全链路压测,业务可以探测系统级复杂链路的性能瓶颈,辅助其作出相应的容量规划。

随着分布式架构和业务快速发展给业务系统带来了不确定性,分布式环境的任何节点都可能成为瓶颈/短板/问题。拿如下这个简单系统为例,用户对系统的一次请求,经过负载均衡、接入层服务、逻辑服务,最终请求到了外部服务,同时产生的用户数据也被存储下来。

全链路压测与普通压测的区别_压测

在这条链路中,其中任何一个服务节点或者存储节点出现性能瓶颈,都可能导致整个系统受到影响。

组件

类型

潜在瓶颈/问题

SLB

负载均衡

容量不足、建连失败

APIGateway

API网关

容量不足、线程等待、触发限流

逻辑服务A

微服务

容量不足、线程池满、触发限流、GC

逻辑服务B

微服务

容量不足、线程池满、触发限流、GC

逻辑服务C

微服务

容量不足、线程池满、触发限流、GC

MySQL

数据库

容量不足、触发限流、连接池耗尽、慢SQL

Redis

KV缓存

容量不足、触发限流、连接池耗尽、缓存击穿、缓存热点、大对象

外部服务

第三方依赖

拒绝参与压测

当然,在得出这条结论之前需要具备一些前提条件:第一、拥有“上帝视角”获取到了调用接口背后的链路拓扑图;第二、同时拥有完备的监控数据做支撑。而这些可能是我们日常进行普通压测所缺乏的。普通压测更多的关注在发压能力以及发压端,对于被压端却是黑盒的。普通压测与全链路压测的区别总结如下:

支持能力

普通压测

全链路压测

发压能力



压测流量识别



数据隔离



风险熔断



全链路监控数据展示



可见全链路压测的特点在于:

  • 支持脏数据隔离与流量隔离;
  • 支持高负载等异常发现能力,实现压测任务自动化熔断;
  • 支持压测接口背后依赖的的节点链路透视;
  • 支持实时监控被压链路的指标数据。

三、全链路压测解决什么问题?

  • 新系统上线:全链路压测用于新系统上线,准确地探知站点能力,防止一上线就被用户流量打垮;
  • 峰值业务稳定性:通过全链路压测对类似于阿里双11的峰值业务稳定性进行考验,保障峰值业务不受损;
  • 站点容量规划:通过全链路压测技术对成本进行优化,对站点进行精细化的容量规划;
  • 性能瓶颈探测:全链路压测还可以用于探测站点的性能瓶颈,提升站点的整体服务能力和吞吐量。

四、如何选择全链路压测工具

优测压力测试是一款云原生性能测试工具,可模拟百万用户发压,支持单接口、全链路及JMeter压测。提供多维度性能测试报告,帮助业务快速定位产品性能瓶颈、准确验证系统能力,全面提升稳定性。

产品优势

  • 即开即用快速发压

零代码配置,无需具备编程基础,涵盖主流性能测试场景。精简化参数配置,快速发起压力测试

  • 全球压力源百万并发

提供全球各地不同压力源,模拟真实用户流量,最大支持百万并发用户数

  • 高度兼容JMeter

免去测试环境部署、JMeter运维烦恼,脚本快速平移、即刻云端发压

  • 秒级性能监控

被测服务器、压力机性能指标实时监控,秒级监控频率全面掌握压测执行状态

  • 多维度测试报告

实时监控测试过程,提供详细的采样日志和多维度可视化测试报告,快速追踪性能问题、评估性能瓶颈

全链路压测与普通压测的区别_限流_02

全链路压测与普通压测的区别_链路_03

标签:服务,容量,区别,压测,性能,限流,链路
From: https://blog.51cto.com/u_15943164/7200104

相关文章

  • 依赖注入 和 new 一个实例有什么区别吗
    Java这东西就是纯粹的概念,而且很多公司还喜欢拿着这个不停的问。我们平常写的Class就是对象。New就是把这个Class实例化,实例化啥意思,就是在内存中分配空间呗,不实例化,数据存哪里呀。这里就是有个奇葩的问题,因为ClassA中有个变量叫做ClassB,那这个就叫做依赖了。如果......
  • C与C++的区别
    一、函数重载1、什么是函数重载?在同一作用域下,函数名相同,参数列表不同的函数构成重载关系函数重载与返回值类型、参数名无关与作用域是否相同,以及参数列表的数量、参数类型、常属性不同等有关2、C++是如何实现函数重载的?通过g++-S生成汇编代码可知,编译器会把函数......
  • LinearLayout对齐gravity和layout_gravity的区别
    android:gravity:是对view组件本身来说的,是用来设置组件本身的内容应该显示在组件的什么位置,默认值是左侧。android:layout_gravity:是相对于包含该元素的父元素来说的,设置该元素在父元素的什么位置。其属性值主要有以下几种:top:将对象放在其容器的顶部,不改变其大小。bottom:将对象放......
  • nodejs 使用exec ,execFile,spawn运行子进程区别,以及如何正确的的关闭子进程
    exec,execFile,spawn都是运行一个子进程,但是在不同的操作系统上用法和表现有很大差异。linux/unixexec运行子进程需要创建一个终端环境(命令行窗口),然后在其中运行命令,execFile则不需要,因此在linux/unix上,execFile的效率更高。windows在windows平台上,运行脚本程序(如批处理.bat)必须有......
  • CyclicBarrier、CountDownLatch和Semaphore区别
    CyclicBarrier、CountDownLatch和Semaphore都是Java并发编程中常用的同步工具,它们在功能和使用方式上有一些区别。CyclicBarrier:CyclicBarrier用于多个线程之间互相等待,直到所有线程都到达某个屏障点后才继续执行。CyclicBarrier可以重复使用,每次到达屏障时,它的计数器会自动......
  • C# 深拷贝和浅拷贝的区别
    含义:深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。假设B复制了A,修改A的时候,看B是否发生变化:如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)浅拷贝(shallowCopy)只复制了原......
  • swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
    声明几个类://动物类classAnimal{}//陆地动物类classterricole:Animal{}//海洋动物类classSeaAnimals:Animal{}1,is用来做类型检查letcat=terricole()letfish=SeaAnimals()letarr=[cat,fish]foranima......
  • vue中watch和computed的区别
    computed中的console.log会执行吗?然而,需要注意的是,console.log语句在计算属性计算期间执行的结果将被打印到浏览器的开发者工具控制台中,并不会直接在页面上显示。如果你希望在页面上显示计算属性的值,可以将其绑定到模板中进行显示。computed的触发时机?在Vue中,computed属性的......
  • 手持式激光焊接机水冷与风冷在焊接厚度上有什么区别
    编辑:镭拓激光手持式激光焊接机是目前在薄型板材焊接领域非常受欢迎的一种便携式激光焊接设备,要在使用中充分发挥它的速度快、效率高、焊缝美观等优势特点,正确选择合适的型号非常关键。目前市场上手持式激光焊接机的类型还是比较多的,而且配置上差异也是比较大。近日遇到客户咨询关于......
  • 深克隆和浅克隆的区别
    目录赋值操作浅克隆深克隆常见的深克隆方式1.所有引用属性都实现克隆,整个对象就变成了深克隆。2.使用JDK自带的字节流序列化和反序列化对象实现深克隆。3.使用第三方工具实现深克隆4.使用JSON工具参考赋值操作@Getter@SetterpublicclassUser{ privateStringname......