技术大佬说我对「压测目标」的分析不够细

news2024/9/19 11:05:52

 

前言

        前面总结压测类型的时候有简单描述了不同压测类型的从准备-脚本设计-压测的整体过程,但是对于压测对象没有更深入的进行分析总结,导致在压测执行结束后,出现压测结果不准确的情况。所以这边就压测的对象进行单独的总结分析。

    在执行压测的时候,压测模型和数据模型需要尽可能的模拟真实环境的请求情况,只有在这种模式下进行压测,产出的报告才具备参考性。

压测模型

    我这边所要描述的压测模型,主要指我们设计压测脚本的具体的对象(内容),不同类型的压测目标,对应的需要进行压测模型就不一样。

    这就好比我们点外卖点餐一样,老板要打包就需要明白打包的东西是什么?

1.客户点「白米饭」,那老板只要把白米饭给我们就好(其中白米饭就是具体的对象)

2.客户点「蛋炒饭」,那老板要把白米饭和蛋加工后,再一起提供给我们(其中白米饭和蛋就是具体的对象)

1.评估单个接口请求的性能瓶颈

    针对核心功能请求量比较大的接口,在进行发布前会需要进行单个接口请求的性能瓶颈,就是对单个接口进行逐步提高请求压力,查看该接口的QPS极限,以及过程中出现的问题

2.评估指定业务场景的性能瓶颈

    在指定场景,需要通过逐步提高压力来探查部分接口的性能瓶颈;例如热点推送、双十一等特殊时期,需要大量用户在同一个周期内点击查看推送内容、或者大量用户进行下单支付,这个流量突然增大的情况下,接口请求或者服务是否存在性能瓶颈问题。

3.评估当前服务整体的性能瓶颈

按照当前服务的top流量接口请求,计算每个接口的请求占比,按照占比同时进行施压:

1.grafana平台获取top流量接口列表

2.根据实际情况选择压测接口,必须满足以下2个条件

    2.1 QPS>100(100是个参考值,可以根据实际业务情况进行调整,主要满足条件2.2即可)

    2.2 选取的所有接口总流量/服务总流量>90%(流量占比越接近100%,压测模型就越贴近实际,压测结果更准确)

案例:

    服务的QPS max峰值5000,选取的top流量接口有6个,6个接口的QPS max总和为4900,那么总流量占比=4900/5000*100%=98%

3.计算单个接口的压测流量占比

选择的top流量接口有5个分别是a、b、c、d、e,则各个接口的流量占比为:

接口a占比=a /(a+b+c+d+e)*100%,其他也同样进行计算

数据模型

梳理完压测的模型后,需要考虑接口传递的数据时什么样子的,也就时数据模型。

主要是准备压测时使用的测试数据,本次实践中总结出2点:

    1.压测数据尽可能模拟大部分用户的真实场景

        1.1面对数据:数据缓存、数据量、数据的其他特征情况

        1.2面对用户:对单个用户、还是多个用户进行压测

    2.环境尽可能贴近真实用户使用的环境

        2.1服务资源配置:应用资源配置、数据库配置等

        2.2数据库特殊处理:例如线上用户数据有分表,那么在压测时需要同样选择有分表的数据库进行压测

案例:

接口类型

数据要求

获取内容列表

总数据量:total=1w

单页查询数据量:pagesize=15

页码:pagenum=随机1-100之间

修改内容

1.随机获取内容

2.随机获取大json、小json对内容进行修改

        在技术大佬的指导下,深入重新梳理分析了压测的流量模型和数据模型,最后输出的压测方案明显比前面自己绞尽脑汁、东拼西凑得到的方案显得更专业、更具有执行价值~在此感谢大佬的支援~♥️以上仅为个人本次性能实践的总结~仅供参考~

生活是自己的

千万别为难自己

有什么样的能力

就过什么样的生活

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

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

相关文章

lego-loam学习笔记(三)

前言: 对于lego-loam中点云聚类源码的学习,它使用了广度优先算法,并且使用了数组双指针技巧。 主要分为两个部分: 第一个是labelComponents函数,它的功能是为每个点及其相邻的4个点运算角度,在对角度小于…

微信小程序开发

微信小程序开发 | 前言:本文章中的很大一部分内容的图片,文字信息来源于微信小程序官方文档和网络资源,感谢大家的支持,如文章中有不足和错误的地方,请及时联系作者-白泽。并协同修改,相信大家的帮助会使这…

屏蔽360阻止远程执行变更注册表自启动数据的办法

屏蔽360阻止远程执行变更注册表自启动数据的办法 运程服务器上的程序,由于需要。我在服务器中,加入更新升级自身(exe)文件,并变更操作系统自启动数据的代码。 实践证明,通过客户端,调用运程服务…

spring 声明式事务 @Transactional 运行原理

注意:如果想要理解spring 的声明式事务,必须先理解AOP 的原理。 一、spring注册 InfrastructureAdvisorAutoProxyCreator 通过 EnableTransactionManagement 可以看到先把TransactionManagementConfigurationSelector通过Import注册到spring。同时注意…

VULNCMS靶机

环境准备 靶机链接:百度网盘 请输入提取码 提取码:i3j0 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2022.03 信息收集 1.查看靶机ip地址 2.探测目标靶机开放端口和服务情况。 nmap -p- -sV -A 192.168.1.108 漏洞…

嵌入式串行接口标准

在嵌入式系统中,经常使用UART接口实现通讯、调试日志数据等功能,但UART是一种异步通信协议,并未定义物理层的电气接口标准。 在板件通信时,UART接口之间通常基于IO直接连接进行通信(TTL/CMOS电平标准,3.3V电…

梦熊杯-十二月月赛-白银组题解-B.契约

B. Problem B.契约(contract.cpp) 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述: 「璃月」是「契约」的国度。 摩拉克斯认为&#xff0c…

Lua 字符串

Lua 字符串 参考至菜鸟教程。 字符串或串(String)是由数字、字母、下划线组成的一串字符。 Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符。双引号间的一串字符。[[ 与 ]] 间的一串字符。 以上三种方式的字符串实例如下: string1 …

基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子)

基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子) 概述 许多目标检测的数据是通过直接标注或者公开平台获得,如果存在语义分割Ground Truth的标签文件,怎么样实现yolov5的目标检测…

【图论】求欧拉回路

前言 你的qq密码是否在圆周率中出现? 一个有意思的编码问题:假设密码是固定位数,设有nnn位,每位是数字0-9,那么这样最短的“圆周率”的长度是多少?或者说求一个最短的数字串定包含所有密码。 理论 一些…

acwing1264_动态求连续区间和

目录 算法分类: 问题描述 算法适用题目范围: 实现代码: 算法分类: 树状数组/线段树 问题描述 给定 n个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b]的连续和。 …

1602_MIT 6.828试验环境搭建

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 最近尝试看一下MIT的操作系统教程,找到了一个6.828的课程。看了一下网络上的介绍,看起来这个大家的认可度还是很高的。开动之前&#xff0c…

Android面经_111道安卓基础问题(四大组件BroadCast、内容提供者篇)

该文章涉及的内容主要是:BroadCast、内容提供者; Android基础问题——四大组件之BroadCast、ContentProvider 内容提供者1、BroadCast1.1、Android的广播分类1.2、Android的广播注册方式1.3、广播作用域2、内容提供者Content provider2.1、什么是内容提供…

Google Protobuf 实践使用开发

Android 敏捷开发助手 Lottie动画 轻松使用PNG、JPG等普通图片高保真转SVG图Android 完美的蒙层方案Android MMKV框架引入使用强大无匹的自定义下拉列表Google Protobuf 实践使用开发 Protobuf 实践使用前言Protobuf基本介绍Protobuf 使用配置protobuf 基本语法1. 基本使用2. …

JavaWeb-Ajax

JavaWeb-Ajax 3,Ajax 3.1 概述 AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来说概念中的 JavaScript 和 XML,JavaScript 表明该技术和前端相关;XML 是指以此进行数据交换。 3.1.1 作用 AJAX…

用Python绘制傅里叶级数和泰勒级数逼近已知函数的动态过程

文章目录Taylor级数Fourier级数本文代码: Fourier级数和Taylor级数对原函数的逼近动画Taylor级数 级数是对已知函数的一种逼近,比较容易理解的是Taylor级数,通过多项式来逼近有限区间内的函数,其一般形式为 f(x)∑n0Nanxnf(x)\su…

Lua 运算符 - 较为特殊部分

Lua 运算符 - 较为特殊部分 参考至菜鸟教程。 算术运算符 操作符描述实例^乘幂A^2 输出结果 100-负号-A 输出结果 -10//整除运算符(>lua5.3)5//2 输出结果 2在 lua 中,/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计…

Shiro学习文档

Shiro Java安全框架 1.什么是权限管理 ​ 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理…

oracle mysql postgresql opengauss 批量kill session

oracle alter system kill session sid,serial# immed; (根据v$session中查出sid和serial#进行替换) 这里提供一个常用脚本,支持跨实例kill会话 (替换&1条件或放到脚本调用都行) select alter system kill sessi…

Dubbo 简介

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性&…