全链路压测

news2024/11/25 10:59:25

一般区分为两种:测试环境和生产环境压测。因生产环境的压测和真实用户的使用环境完全一致,测试结果更具有参考性。

        全链路的压测的实施一般需要给压测请求带一个压测标识,用于压测数据的数据落库,查询,缓存,消息中间件topic的数据隔离。通常的在处理请求头中带eg:yc标识的请求,数据库操作自动指向对应业务的影子表(根据真实业务表的表结构创建的另外一张影子表,如xxx_test)、缓存查询、消息处理也指向对应的_test组件或topic。

对于程序处理的业务逻辑压测和正式请求则使用同一套。

主要流程

 

在系统的性能稳定性保障的流程,大概有如下六个事情

1.系统峰值评估

toC 的业务,从登录到交易,其实系统是有物理上限的,而人民群众对于系统的热爱是不可阻挡的。所以在评估系统峰值的时候,是需要和业务部门,约定好系统到底要支撑多少峰值,以此作为容量评估的依据。

也会有一种情况,是业务部门也不知道该支撑多少,这时候,根据以往的监控数据,乘以一个倍数来让业务方选择即可。

还有一种情况,是新接口或者线上未监控的接口,不存在历史数据,且不存在类似功能接口的数据可供参数考,此时需要估算峰值,常用方法有 8/2 原则——一天内 80%的请求会在 20%的时间内到达。

top QPS = (总 PV 0.8) / (60 60 * 24 * 0.2)

RT 如无特殊要求,一般采用默认值:

单服务单表类,RT<100ms

较复杂接口,RT<300ms

大数据量或调用链较长的接口,RT<1s

电商秒杀活动,预估同时有 1000w 人参与,简单起见假设总 QPS 是 1000w。由于前端不同的秒杀倒计时形式使得请求有 2s 的打散,再加上 nginx 等 webserver 做了 20%几率拒绝请求的策略,所以下单接口总 QPS = 1000w / 2 * (1 - 0.2) = 400w/s,最终压测目标为 400w/s 的 QPS。

电商全天低价抢购活动:根据 8/2 原则,预估在午休(12-1)和晚上下班后(7-10)共 4h 是流量高峰,估算接口峰值 QPS = 活动全天接口 PV / (4*3600s)。

2.依赖梳理 &上下游流量评估

微服务架构下,服务的调用网络呈现出网状模型,如果本身有分布式链路追踪的工具,可以比较快速的进行依赖梳理。

什么是上游、下游?

下游的输入来自于上游的输出,假设有服务 A、B,A 调用了 B(或者说 A 依赖 B),那 B 就是 A 的上游,A 就是 B 的下游,因为 A 的输入来自于 B 的输出(A 调用了 B,获取 B 的输出)

上下游流量评估,主要是结合上面的系统峰值,来判断上下游的流量情况。

3.单链路压测

链路这个词,很容易产生歧义。我和不同的人交流过,对这个词语都会不同的理解。

如何避免产生歧义呢,其实很简单,按照一个 http 或者 dubbo 的入口来作为原子链路,是最不容易产生歧义的。

为什么要做单链路的压测?

在微服务架构下,整体链路的性能瓶颈,取决于短板(木桶原理)。

因此,单机单链路基准测试的目的,是在全链路压测开始前进行性能摸底,定位排查链路瓶颈。

4.系统优化、扩容

在做单链路的压测完毕后,定位瓶颈点。对瓶颈点进行优化完毕后,根据系统峰值进行扩容。

5.生产环境全链路压测

在完成了单链路的压测、优化、扩容后,就可以进入到全链路压测的阶段了。

一般来说,在开始全链路压测前,还要做一波预热,预先跑一部分流量使得该缓存的数据提前缓存起来。

正式压测时细分有几种压测策略:

峰值脉冲:流量是逐渐变大的一个小坡,还是骤升后保持高峰;

系统摸高:关闭熔断降级限流等 fallback 功能,提高压力观察系统性能转折点;

fallback 策略验证:开启熔断限流等 fallback 功能,这些功能是否生效,系统是否还能扛得住;

破坏性测试:主要为了验证预案的有效性,类似于容灾演练时的预案执行演练,验证后手抢救方案。

6.预案评审、演练 &应对手册输出

专项预案主要包括如下几项:限流、降级、熔断、脉冲、破坏性验证等五种场景。

进行预案演练的目的主要有如下几项:

1、验证预案是否生效;

2、针对预案设定阈值进行测试调优;

3、验证预案生效时服务本身的性能表现;

4、针对上述专项场景进行实战演练;

其他关键措施

为了保证核心业务的高可用,生产环境的压测是一种技术手段,同时仍要从系统透明化、降低强依赖、隔离、降级这些手段入手。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设备维修管理系统

设备维修管理系统能够有效提高设备管理水平和设备运行效率。它不仅能够帮助企业实现设备信息化管理&#xff0c;还可以快速定位设备故障&#xff0c;提高设备修复效率&#xff0c;从而更好地保障生产安全和生产效率。 凡尔码搭建设备维护保养管理系统主要由以下几个模块组成&am…

【TA100】图形 2.2 模型与材质基础

一、 渲染管线与模型基础 1.可编程渲染管线 ● 蓝色背景的&#xff1a;可编程管线 ● 顶点着色器&#xff1a;模型的顶点进行计算 ● 片元着色器&#xff1a;将光栅化阶段插值的信息进行计算 2.uv ● 纹理映射&#xff1a;任何3D物体的表面都是2D的→纹理就是一张图→纹理…

6个免费商用图片素材库,再也不用担心版权问题了

本期给大家分享6个免费可商用的视频素材网站&#xff0c;设计师、自媒体、视频剪辑有福啦&#xff0c;再也不用担心版权问题了&#xff0c;记得收藏起来哦~ 菜鸟图库 https://www.sucai999.com/pic.html#?vNTYxMjky 网站主要是为新手设计师提供免费素材的&#xff0c;素材的…

[CKA]考试之基于角色的访问控制-RBAC

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Context&#xff1a; 为部署流水线创建一个新的ClusterRole并将其绑定到范围为特定…

Pandas的to_sql()插入数据到mysql中所遇到的问题

使用pymysql驱动API&#xff0c;出现如下错误&#xff1a; DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type‘table’ AND name?;’: not all arguments converted during string formatting 1. pandas的数据表插入数据到mysql中所遇到…

王道考研数据结构代码总结(后四章)

目录 树基本概念与属性树的基本性质 图拓扑排序 本文包含王道考研讲课中所涉及的数据结构中的所有代码&#xff0c;当PPT代码和书上代码有所区别时以咸鱼的PPT为主&#xff0c;个人认为PPT上的代码比王道书上的代码要便于理解&#xff0c;此外&#xff0c;本博客也许会补充一些…

css01:顶部导航栏,左右分离布局

css01&#xff1a;顶部导航栏&#xff0c;左右分离布局 效果 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>顶部导航栏</title><style>body {margin: 0;padding: 0;}.top-nav {background-color: #ff…

Python采集二手车数据信息,看看啥车最得心意

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版是付费的 <码可以免费用> 社区版是免费的 模块使用: 内置模块 无需安装 csv 第三方模块 需要安装的 requests >>> pip install req…

大数据可视化开源平台,一招让数据资源活泛起来!

在现代化办公环境中&#xff0c;数据资源也是非常重要的一种发展要素。有不少朋友会私信我们询问道&#xff1a;如何将企业内部的数据资源利用起来&#xff0c;真正发挥其价值为我所有&#xff1f;在这里&#xff0c;推荐大家了解大数据可视化开源平台&#xff0c;这是可以为企…

深度学习的各种卷积的总结

如果你听说过深度学习中不同种类的卷积&#xff08;比如 2D / 3D / 1x1 /转置/扩张&#xff08;Atrous&#xff09;/空间可分/深度可分/平展/分组/混洗分组卷积&#xff09;&#xff0c;并且搞不清楚它们究竟是什么意思&#xff0c;那么这篇文章就是为你写的&#xff0c;能帮你…

既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?

今天这篇文章呢&#xff0c;我会从以下几个方面来介绍&#xff1a; 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 一、pytest框架介绍 pytest 是 python 的第三方单元测试框架&a…

微信如何群发消息?如何群发突破200上限?

相信每到各种节日的时候&#xff0c;很多人都会发布或收到微信好友的节日祝福或活动通知。群发已经是一件很普遍的事了。逢年过节&#xff0c;发个微信祝福&#xff0c;是维系关系的必须&#xff1b;发个活动通知&#xff0c;是为了告知客户&#xff0c;促进销售。 01 微信自带…

2023年最新网络安全面试题合集(附答案解析)

前言 为了拿到心仪的 Offer 之外&#xff0c;除了学好网络安全知识以外&#xff0c;还要应对好企业的面试。 作为一个安全老鸟&#xff0c;工作这么多年&#xff0c;面试过很多人也出过很多面试题目&#xff0c;也在网上收集了各类关于渗透面试题目&#xff0c;里面有我对一些…

佩戴舒适音质悦耳,试试这款耳夹式耳机,塞那Z51S Pro Max上手

蓝牙耳机很多人每天都用&#xff0c;工作学习的时候戴上&#xff0c;可以随便听听舒缓心情&#xff0c;随便哪个平台都有丰富的音乐、播客等类型的资源&#xff0c;听着听着就下班了。市面上蓝牙耳机的种类这两年多了不少&#xff0c;我目前用的是一款sanag塞那Z51S Pro Max&am…

从Android UI收集流的更安全方法

从Android UI收集流的更安全方法 在安卓应用中&#xff0c;通常从UI层收集Kotlin flows以显示屏幕上的数据更新。但是&#xff0c;为了确保不做过多的工作、浪费资源&#xff08;包括CPU和内存&#xff09;或在视图转到后台时泄漏数据&#xff0c;您需要收集这些flows。 在本…

(2023,语义混合)处理神经网络中语义和视觉对齐的差异

Addressing Discrepancies in Semantic and Visual Alignment in Neural Networks 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 4. 实验 5. 结果 6. 讨论与结论 参考 S. 总结 S.1 主要思想 S.2 语义混合 S.3 方法 0. 摘要 对于图像分类任…

苹果Vision Pro将引爆人机交互的重大变革

2023年6月6日&#xff0c;苹果发布了大家期待已久的Vision Pro&#xff0c;Vision Pro是一款专业级MR设备&#xff0c;融合了虚拟现实(VR)和增强现实(AR)技术&#xff0c;可以让用户完全沉浸在高分辨率显示内容中。允许用户以一种全新的方式在其周围的空间中查看APP。用户可以用…

unreal 5 实现角色拾取功能

要实现角色拾取功能&#xff0c;我们需要实现蓝图接口功能&#xff0c;蓝图接口主要提供的是蓝图和蓝图之间可以通信&#xff0c;接下来&#xff0c;跟着教程&#xff0c;实现一下角色的拾取功能。 首先&#xff0c;我们要实现一个就是可视区的物品在朝向它的时候&#xff0c;会…

基于云技术的域名解析系统研究一:传统解析技术弊端(中科三方)

域名解析是互联网的一项重要基础作用&#xff0c;主要用于将域名翻译成计算机可识别的IP地址&#xff0c;完成对网络中其他主机的寻址任务。我们日常工作生活中的大部分网络应用&#xff0c;如网站访问、电子邮件以及其他各种web应用服务&#xff0c;都需要经过域名解析的寻址去…

Oracle的登陆问题和初级学习增删改查

1&#xff1a;学习Oracle首先需要安装Oracle&#xff0c;网上已经有很多很多教程了&#xff0c;这里不做叙述&#xff0c;自己百度即可&#xff0c;这里安装的标准版&#xff0c;个人根据需求安装学习或者企业开发即可。如果安装出错&#xff0c;自己百度Oracle的卸载即可&…