【服务端性能测试】测试方案设计(实操需要准备的内容)

news2024/11/23 3:31:40

一般性能测试流程都是:获取测试需求——>测试需求分析——>测试方案设计——>压测环境搭建(目前是线上)——>测试数据准备——>测试脚本准备、调试——>测试脚本执行——>监控数据录入——>测试结果跟开发一起分析——>出具测试报告
在这里插入图片描述
前置的需求收集、策略选择之类的,可以参考我这篇文章:https://blog.csdn.net/qq_42905388/article/details/135865043

一、压测环境准备

一般来说,进行性能测试的环境都是在UAT或者独立的性能测试环境,但为了准确描述环境类型和配置,以及测试环境和生产环境的区别,一般会对生产环境和测试环境进行对比说明。

1.1 确认待测业务的系统架构

由于涉及公司业务安全,此处我就不放我们的架构图了。
正常就是确认下客户端层、业务层(包含一些同步依赖)、基础层(涉及脚本、中间件)、异步业务层。

1.2 确认服务配置

1.2.1 名词介绍

CPU配置:1C代表1核心处理器。2C代表2核心处理器。4C代表4核心处理器。8C代表8核心处理器。
常见的有2C4G、4C8G、8C16G等等,意思就是2核心处理器4GB内存的云服务器,以此类推。

1.2.2 梳理配置

一般包含:服务名称、配置数量、具体配置(静态资源、动态资源使用的软限、硬限)、主从设计

1.3 确认机器配置

redis集群配置、tidb数据库配置、服务机器配置、mysql集群配置 等,有可能也是散落在各个平台查看的。

二、压测数据管理

2.1.1 数据准备

无论是数据量级、分布方式、是否缓存、缓存大小还是热点数据(用户的热点请求对应的数据,例如登陆态数据等等),都是需要考虑的地方。
性能测试中,主要有如下几种类型:

1、基础数据

对于性能测试来说,基础数据一般指的是支撑业务流程正常运行所必备的数据,需要考虑如下几个方面:

1)数据量级:根据环境具体配置信息,保证数据量级和生产环境等比例,是很有必要的事情;

2)数据脱敏:从经验来说,基础数据的量级一般较大,常见的准备方式都是copy生产数据并进行脱敏;

2、测试数据

测试数据是为了满足被测业务场景的链路而所需的数据,在具体的压测准备阶段,需要根据被测链路,针对性的准备测试数据,保证场景的正常执行;

3、唯一性数据

某些比较特殊的被测场景,所需的数据是具有唯一属性的,或者一次性使用的特性。

从经验来说,这类数据,建议通过走正常的业务逻辑去生成,可以根据所需数据量大小来准备。

4、参数化数据

这类数据一般是具有可复用性的,比如productId/userId…,建议提前了解整体的业务和技术类型,准备一批量级较大的数据,避免重复工作。

2.1.2 注意事项

注意压测后的数据恢复、压测数据清理

三、压测脚本准备

3.1.1 脚本和工具准备

可以使用jmeter,或者自研工具

3.1.1 其他注意事项

1、可复用的尽量集成为工具,后续替换参数即可复用;
2、脚本的执行顺序;

四、数据监控

部分公司的数据会散在各种平台里,所以做方案的时候最好就梳理出来。
业务监控总览、业务rpc QPS、业务CPU跟内存(确认下有没有除以核数)、DB、REDIS、链路追踪 等

五、容量规划的一些名词

qps的计算 : ( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
例如: 每天300w PV 的在单台机器上,这台机器需要多少QPS = ( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

单机能力 = 单台服务器压测的阀值 qps(通过线下压测)
单机负荷 = 上线后单台机器最大qps(或是通过线下压测)
集群能力 = 单机能力 * 机器数(机器环境一致)
集群负荷 = 上线后集群最大QPS(单机负荷 * 服务器数量)

水位标准
单机房 : 70%
双机房 : 40%
三机房 : 60%

单个机房容量计算
单机水位 = (单机负荷/单机能力) * 100%
集群水位 = (集群负荷/集群能力) * 100%
理论机器数 = (实际机器数 * 集群负荷 * 集群水位) /(集群能力 * 水位标准)
机器增减 = 理论机器数 – 实际机器数 or 实际机器数 – 理论机器数

参考:http://www.inter12.org/archives/657

六、出具测试报告以及对结果最初步分析

6.1 性能瓶颈寻找:通过TPS(QPS)、响应时间、线程进行分析

这里大部分还是要靠经验。比如:

  • 正常线程数量增加,每秒的处理事务数量也会跟着增加,如果线程增加了,TPS没有持续增加,且响应时间也跟着增加了,系统的瓶颈显而易见地出现了。
  • 火焰图相关知识参考:https://blog.csdn.net/gatieme/article/details/78885908

6.2 推荐分析指标

6.2.1 RPC服务指标:

rpc服务tp99指标、内存
1、本周最大QPSXXX最小XXX
2、接口最大平均耗时XXX
3、接口TP90XXXX,TP99XXXX,TP999XXXX
4、内存占用最大XX最小XXX平均XXX
5、CPU(除以核数)占比最大XX最小XXX平均XXX
6、routine数量
7、堆对象数量
8、GC耗时

6.2.2 缓存指标:

1、qps最大XXX最小XXX
2、memory usage

6.2.3 Mysql指标:

1、qps最大XXX最小XXX

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

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

相关文章

springboot141夕阳红公寓管理系统的设计与实现

基于Spring Boot的夕阳红公寓管理系统的设计与实现 摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的…

如何在树莓派安装运行Nginx实现无公网ip环境访问内网静态网站

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

从零开始复现GPT2(四):训练代码的实现

源码地址:https://gitee.com/guojialiang2023/gpt2 GPT2 模型Configuration类定义 Recorder训练框架Trainer训练代码GPT2TrainingSpec 类train_gpt2_model 函数add_subparser 函数 模型 Configuration 这段代码定义了一个名为 TrainConfig 的 Python 类&#xff0c…

TypeScript(十) Map对象、元组、联合类型、接口

1. Map对象 1.1. 简述 Map对象保存键值对,并且能够记住键的原始插入顺序。   任何值都可以作为一个键或一个值。 1.2. 创建 Map 使用Map类型和new 关键字来创建Map: 如: let myMap new Map([["key1", "value1"],[&…

docker私有库

1.registry私有仓库 拉取registry镜像 docker pull registry 修改docker配置文件并重启 vim /etc/docker/daemon.json {"insecure-registries": ["172.16.23.23:5000"], #添加,注意用逗号结尾"registry-mirrors": ["ht…

网络编程之ip地址

目录 1、概念: 2、所属的tcp/ip协议的层 3、IP地址查询 (1)Linux (2)windows 4、IP地址结构组成及分类 (1)组成(网络位主机位) (2)分类 1、…

Linux进程控制:进程创建与等待

目录 一、fork函数 1.1fork函数的调用与功能 1.2fork函数的返回值与写实拷贝 1.3fork的常规用法与失败原因 二、进程终止 2.1进程的退出场景和常见退出方法 2.2_exit函数与exit函数 2.2.1_exit函数 2.2.2exit函数 2.3return退出 三、进程等待 3.1wait及waitpid的方法…

MFC串行化的应用实例

之前写过一篇MFC串行化的博文;下面看一个具体例子; 新建一个单文档应用程序;在最后一步,把View类的基类改为CFormView; 然后在资源面板编辑自己的字段; 然后到doc类的头文件添加对应变量, public:CString name;int age;CString sex;CString dept;CString zhiwu;CStrin…

CentOS部署Docker Registry镜像仓库并结合内网穿透实现远程访问

文章目录 1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)…

山海鲸可视化:引领银行管理进入数据可视化新时代

在金融领域,数据是决策的关键。作为山海鲸可视化的开发者,我们深知数据的价值,并致力于通过可视化技术为银行管理提供更为直观、高效的数据分析工具。 应用场景: 风险管理:银行在运营过程中面临各种风险,如…

Collections集合工具类-JAVA

java.util.Collections:是个集合工具类它不是集合&#xff0c;而是集合的工具类 常用 API&#xff1a;注意 binarySearch 方法要求元素有序 方法实现&#xff1a; public class Test01 {public static void main(String[] args) {ArrayList<String>list1new ArrayList…

双非本科准备秋招(12.2)—— 力扣栈与队列

复习一下栈和队列的基础知识&#xff0c;刷几道题上上手。 1、102. 二叉树的层序遍历 广度优先遍历嘛&#xff0c;每次拓展一个新结点&#xff0c;就把新结点加入队列&#xff0c;这样遍历完队列中的元素&#xff0c;顺序就是层序遍历。 class Solution {public List<Lis…

输电线路图像监视系统研发背景及应用

输电线路建设在野外&#xff0c;在自然环境下&#xff0c;恶劣天气、地质灾害以及人为因素破坏会给线路运行带来巨大挑战&#xff0c;特别是偏远山区、林区、“三跨”等巡线困难区域。传统人工巡视存在局限性&#xff0c;巡视范围有限&#xff0c;线路运维人员压力倍增。 不过近…

[职场] 面试主播试镜要做些什么 #经验分享#笔记

面试主播试镜要做些什么 1.准备独立的空间做直播室&#xff0c;入镜的地方要干净整洁&#xff0c;不能堆太多杂物。可以装扮的温馨一点&#xff0c;也可以根据节日等装扮房间&#xff0c;比如最近圣诞节&#xff0c;放一些圣诞节的装饰物。 2.调试好话筒、灯光等直播设备&#…

JVM篇----第二十篇

系列文章目录 文章目录 系列文章目录前言一、垃圾收集算法二、调优命令有哪些?三、Minor GC与Full GC分别在什么时候发生?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的…

LeetCode:206反转链表

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 不难&#xff0c;小细节是单写一个循环&#xff0c;把特殊情况包含进去&#xff0c; 单链表核心&#xff1a;上一个结点&#xff0c;当前结点&#xff0c;下一个结点&#xff0c; 代码&#xff1a;注释&#xff08;算是…

YOLOv5独家改进:上采样算子 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测

💡💡💡本文独家改进:一种超轻量高效动态上采样DySample, 具有更少的参数、FLOPs,效果秒杀CAFFE和YOLOv5网络中的nn.Upsample 💡💡💡在多个数据集下验证能够涨点,尤其在小目标检测领域涨点显著。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/cate…

路由重定向和别名

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介1. 路由重定向实例场景&#xff1a;路由重定向的应用场景&#xff1a; 2. 路由别名实例场景&#xff1a;路由别名的应用场景&#xff1a; ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏&…

韶音、南卡、Oladance值不值得买?全面对比测评拒绝智商税!

​在目前市场上&#xff0c;有许多质量不佳、音质差的开放式耳机产品。这些产品不仅会影响音频的质量&#xff0c;还可能对用户的听力健康造成潜在风险。作为一名经验丰富的音频设备评测师&#xff0c;我深知在选择耳机时&#xff0c;必须谨慎选择那些具有专业实力的品牌。基于…

基于EdgeWorkers的边缘应用如何进行单元测试?

随着各行各业数字化转型的持续深入&#xff0c;越来越多企业开始选择将一些应用程序放在距离最终用户更近的边缘位置来运行&#xff0c;借此降低延迟&#xff0c;提高应用程序响应速度&#xff0c;打造更出色的用户体验。 相比传统集中部署和运行的方式&#xff0c;这种边缘应…