全链路压测原理剖析(Coding)

article/2025/11/5 21:17:11

引言


什么是全链路压测?
相对于传统的单接口压测,全链路压测旨在能完全模拟真实的用户的施压场景在生产环境或类生产环境执行的压测。在服务器、中间件、数据库等所有软硬件配置上,和线上保持一致;在压测场景上,通过线上流量录制回放模拟真实用户的使用场景;调用链路上,尽可能全链路调通,不做和少做mock。

原理

全链路压测的原理,基本上可以用4个四字短语进行概括:流量分区、存储隔离、参数偏移、场景模拟。
为了方便大家了解整体逻辑,盗了一个网上的图:
在这里插入图片描述

流量分区

通过在压测流量入口请求中增加压测标志并在整个压测链路上保持压测标志来和线上真实流量区分开。具体实施方式上,采用在HTTP请求的 header部分和RPC(dubbo、thrift等)请求的protocol header部分增加一个isTest=true字段来标识压测流量。

存储隔离

项目中使用的数据库、缓存和各种中间件,通过上游请求是否有压测标志来判断是否为压测流量。
数据库层面,压测前需要将所有的生产数据库表在导出一份影子表(数据库资源占用量会放大一倍),压测时根据上游请求中是否有压测参数,判断是走真实数据表还是影子表进行数据读写。
Redis等缓存方面,和数据库类似,通过判断请求中有无压测标志,判断是否走影子缓存进行数据读写
MQ:MQ producer传递压测标志,MQ consumer获取压测标志后,判断是否走数据库的影子表进行消息读取和写入处理。

参数偏移

参数偏移是一种兜底策略,防止前面2步“流量分区”和“存储隔离”出问题导致压测流量进入了真实的生产数据库污染线上数据(心惊肉跳的线上事故)。一般说来,就是在请求时将能唯一标识业务的某些ID,比如商品ID、订单ID等,加上一个偏移值(一般取一个远超业务ID长度的值,注意不要超过设置的数据库字段长度),一旦由于压测标志未传或者丢失,或者存储隔离失效导致压测数据请求到了真实的线上库,由于关键ID做了偏移,生产库对应的ID不存在(未偏移),数据库的更新类操作往往是无法成功的,同时也可以在代码中通过偏移的参数作为特征值对于压测数据写入真实生成库的情况进行异常捕获或者在压测结束后通过特征值对写入的部分新数据进行清理。
需要注意的是,参数偏移策略,需要在导入影子表时,在执行的SQL中增加偏移值。

场景模拟

全链路压测的核心思想,在于尽可能模拟用户的真实使用情况对尽可能真实的生产环境施加压力。基于线上流量录制回放的施压方式,是一种比较好的选择,在阿里、美团等互联网公司中被陆续使用。
通过将生产环境机器上的请求日志进行结构化存储,http请求可以提取nginx日志(nginx需要根据流量录制需要的参数进行配置),rpc请求可以将通过filter的日志入库。压测时可以根据需要,从数据库提取出指定时间的某些符合需求的请求,通过对流量数据进行一定的预处理——比如,通过脚本将请求中的token替换成永久有效的token,对请求的参数进行偏移处理,等等——然后作为压测流量进行回放施压。

实施

业务梳理

基于压测场景入口,从头到尾梳理调用链路,保证流量染色有始有终,流量出口都在掌握中,确保涉及的各类存储、中间件无遗漏,梳理结果输出文档,方便后续业务改造和压测配置时使用。

业务改造

  • 异步线程改造
    针对异步线程可能会丢失压测标志的情况,需要进行对应的业务改造,定制开发线程池,保证压测标志透传。
  • 跨服务间透传
    大部分中间件支持在网络协议传输中将压测标志透传,如果遇到不支持的中间件,需要进行定制化的业务改造。
  • 参数反偏移
    为了支持压测请求的参数偏移,可能需要基于业务逻辑在代码中对部分涉及影子表数据读取的地方进行参数反偏移处理,将请求参数减掉偏移值。

压测场景的选取

数据覆盖分析

  • 数据量
  • 数据分布

链路覆盖分析

  • 核心链路

技术指标分析

  • 线上访问量
  • 链路瓶颈

压测的实施

压测报告与调优


http://chatgpt.dhexx.cn/article/PNGFnpjI.shtml

相关文章

全链路压测实践

一 背景 随着业务的不断增长,系统的稳定性保障尤为重要,传统压测存在诸多不足,以往的压测中各个业务线对单个接口压测,需要单独准备测试机,测试成本高,而且无法直接压测线上接口,也没有历史压测…

测试学习——全链路压测

参考资料:全链路压测平台(Quake)在美团中的实践 全链路压测简介 - 性能测试 PTS - 阿里云 聊聊全链路压测 - 老_张 - 博客园 基于实际的生产业务场景和系统环境,模拟海量的用户请求和数据,对整个业务链路进行各种场…

全链路压测及阿里全链路压测详解

一、前言 很多公司有线下性能测试,那为什么还要做全链路压测呢,全链路能解决一般性能测试的什么问题呢?我认为在每个环境做性能测试是相互补充的过程。在线下的性能测试,由于机器监控,部署迅速以及相应的权限充足&…

全链路压测

核心流程 全链路压测实施的核心流程如下: 骤一:确定压测目标 压测目标主要包括压测范围、策略、目的,往往与业务、技术目标息息相关。例如: 压测范围:用户注册加登录,为大规模拉新做准备。压测策略&#…

说一说IT管理的证书:PMP、高项、IPMP

说一说IT管理的证书:PMP、高项、IPMP 一、PMP二、 高项三、IPMP四、PMP、IPMP、高项对比 作为新一代的农民工,提升也成为内卷大环境下必不可少的一个环节。这里来说一说IT项目管理类的证书认证。 一、PMP pmp是由美国PMI推出的,将项目管理划…

IT资质认证证书如何查询?这篇文章教你查询方式

目前IT行业企业常见的体系和资质认证已经超过了30种,如此众多的体系或资质认证品类,查询渠道也不尽相同,今天小编简要介绍下几种常见证书查询方式,方便大家需要时使用。 ITSS运维维护标准 证书示例 ITSS信息技术服务标准是我国自…

Rancher证书更新

一、环境 主机名IP地址操作系统rancher版本K8s-Master192.168.10.236Centos 72.5.9 二、更新证书 1、查看当前证书到期时间 2、进行证书轮换 [rootK8s-Master ~]# docker ps |grep rancher/rancher d581da2b7c4e rancher/rancher:v2.5.9 &q…

计算机类证书之微软厂商认证分享

MCP、MCT、MVP 最近想考一些计算机证书,网上简单看了下。大致分为国家代表队的计算机技术与软件专业资格考试证书、国内大厂代表队的华为认证、外企代表队的微软认证。在这里给大家分享下,留给有需要的同学。 计算机技术与软件专业资格考试证书 是由国…

证书双向认证

假设你通过openssl生成了如下文件: 双向认证 在开始之前,我们先讲一下什么是证书双向认证,来看一张图: 所谓证书双向认证是指: 服务端使用ca.crt校验客户端的client.crt和client.key客户端使用ca.crt校验服务端的…

夜神模拟器抓包微信小程序(进入浏览器,弹出安全警告(安全证书有问题解决方法)

1.声明:本文仅限学习研究讨论,切忌做非法乱纪之事! 即使按照其它教程的安装证书,也只是把证书安装到了用户下面,然而安卓高版本(7.0)之后呢,app可以只信任指定证书和系统内置的证书…

https配置中间证书

公司最近做了一个在线课堂直播课的小程序,调用的接口使用的是phalapi框架,接口的话使用https协议访问比较安全,nginx部署https已经配置完成,上线时发现ios手机可以正常访问,但是安卓手机访问时会报如下错误信息&#x…

计算机专业哪些证书可以抵个税,2020年度个人所得税汇算清缴进行时 职业资格证书有哪些能抵扣个税?...

好消息!2020年度个人所得税汇算清缴进行时,职业资格证书个税抵扣,千万别错过!那么,职业资格证书有哪些可以抵税呢?个税精灵跟大家聊一聊。 2021年3月1日起,2020年度综合所得个人所得税汇算清缴开…

计算机软件证书

文章目录 前言一、考证目的二、证书介绍2.1 Oracle认证2.2 全国计算机等级考试【NCRE】2.3 全国信息技术高级人才水平考试【NIEH】(已停考)2.4 全国计算机应用考试【NIT】2.5 全国计算机高新技术考试合格证书【OSTA】(已停考)2.6 …

在IT行业里,网工都有啥高含金量的证书可考?

拿下思科/华为认证之后,身为网工的你可以: 跨越90%企业的招聘硬门槛 增加70%就业机会 拿下BAT全国TOP100大厂敲门砖 体系化得到网络技术硬实力 IE大佬年薪可达30w 01 思科认证 思科公司是全球领先的网络解决方案供应商。Cisco的名字取自San Francis…

【原创】mitmdump 安装证书至手机系统证书

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删! mitmdump 安装证书至手机系统证书 环境 win10雷电5Android7.1 雷电模拟器…

国内常见的IT认证都有哪些?这几个入大厂必备

考证一直都是为职业生涯获取更好机会和助力发展的重要途径,对于IT人来说更是如此。 认可度和含金量越高的IT认证,越能够证明一个人的专业实力和发展潜力,在求职和晋升过程中,就会获得更大的成功几率。 ​图源:某招聘网…

IT人需要了解的认证大全(持续补充)

“考证”在各行各业中一直都是热度不减的话题,IT领域也不例外,包括帆软也有相关的职业资格认证。 对于在校学生来说,并没有太多实践经验,证书在一定程度上就是找工作时的“敲门砖”,多张证书多条路;对于职场…

让我来告诉你:大学计算机专业的学生应该去考什么证书.

文章目录 大学计算机专业的学生应该考什么证?一、全国计算机等级考试(NCRE)二、计算机软件水平考试(软考)1.初级证书—程序员2.中级证书—软件设计师3.高级证书—系统分析师 三、企业认证证书1.思科证书2、华为证书3、ORALCE证书3.1. OCA英文全称Oracle Certified Associate&a…

文档数据库(document database)和键值数据库(key-value database)的区别(NoSQL)

文档数据库(document database)和键值数据库(key-value database)的区别 相同点: 都是key-value结构 不同点: 在键值数据库中,我们只能通过key查找到整个value,数据库并不知道value里面存的内容到底是什么,而是通过应…

关系型数据库和文档型数据库有什么区别?

关系型数据库和文档型数据库有什么区别? 关系数据库(Relational Database)是建立在关系模型基础上的数据库,借助于几何代数等数学概念和方法来处理数据库中的数据。所谓关系模型是一对一、一对多或者多对多等关系,常见…