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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——模板方法模式(Template Method Pattern)

概述 模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。模板方法模式是结…

TCP 协议的相关特性

1. TCP格式 TCP特性:有连接,全双关,面向字节流,可靠传输。(TCP安身立命的本钱,初心就是解决“可靠传输”问题) 其实TCP的特征有很多这里我就简单的介绍几个。 2. 确认应答 其实用来确保可靠性&…

【新课】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

本课程由云贝教育-刘峰老师出品,感谢关注 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性,同时提高性能。本课程基于当前主流版本Oracle 1…

2024.1.30 GNSS 学习笔记

站星双差Kalman滤波伪距差分定位流程 1. RTK定位技术(实时载波相位差分技术)原理-站间单差浮点解 1.RTK技术其实就是在RTD技术的基础上增加载波观测值的使用。由于伪距的噪声在分米量级,即使我们通过站间单差消除了绝大部分的误差影响&…

前端入门第二天

目录 一、列表、表格、表单 二、列表(布局内容排列整齐的区域) 1.无序列表(不规定顺序) 2.有序列表(规定顺序) 3.定义列表(一个标题多个分类) 三、表格 1.表格结构标签 2.合并…

基于Raspberry Pi的自动巡航与避障系统(二)

在上一篇中,我们讨论了智能小车的避障逻辑实现,在本篇中,我们将进一步扩展智能小车的功能,包括更高级的避障策略、路径规划和导航功能,同时,我们还将提供相应的代码示例,以帮助读者更好地理解和…

Typora导出html文件图片自动转换成base64

Typora导出html文件图片自动转换成base64 一、出现问题二、解决方案三、编码实现3.1.创建Java项目3.2.代码3.3.打包成Jar包 四、如何使用endl 一、出现问题 typora 导出 html 的时候必须带有原图片,不方便交流学习,文件太多显得冗余,只有将图…

GNSS技术助力航海业迈向新时代:海洋测绘与航行的创新应用

全球导航卫星系统(GNSS)技术在海洋测绘与航行领域的广泛应用,正推动航海业迎来新一轮的科技变革。MinewSemi的GNSS模块为船舶导航、海洋资源勘探和航行安全提供了更为精确和高效的解决方案。本文将深入研究GNSS技术在海洋测绘与航行中的创新应…

开源:基于Vue3.3 + TS + Vant4 + Vite5 + Pinia + ViewPort适配..搭建的H5移动端开发模板

vue3.3-Mobile-template 基于Vue3.3 TS Vant4 Vite5 Pinia ViewPort适配 Sass Axios封装 vconsole调试工具,搭建的H5移动端开发模板,开箱即用的。 环境要求: Node:16.20.1 pnpm:8.14.0 必须装上安装pnpm,没装的看这篇…

基于PSO-BP神经网络的风电功率MATLAB预测程序

微❤关注“电气仔推送”获得资料(专享优惠) 参考文献 基于风电场运行特性的风电功率预测及应用分析——倪巡天 资源简介 由于自然风具有一定的随机性、不确定性与波动性,这将会使风电场的功率预测受到一定程度的影响,它们之间…

GPT-4级别模型惨遭泄露!引爆AI社区,“欧洲版OpenAI”下场认领

大家好,我是二狗。 这两天,一款性能接近GPT-4的模型惨遭泄露,引发了AI社区的热议。 这背后究竟是怎么回事呢? 起因是1月28日,一位名为“Miqu Dev”的用户在 HuggingFace 上发布了一组文件,这些文件共同组…

iOS pod sdk开发到发布,记录

本文章记录从开发sdk到发布cocopod的问题和流程,省的每次都忘还得重新查 1:pod lib create (sdk名称) 命令创建 工程结构,然后根据命令行提示进行选择. What platform do you want to use?? [ iOS / macOS ]。~》 iOS What language do you want to use?? [ Swift / Obj…

“/“应用程序中的服务器错误.

<div id"m_category" class" round2"><h3>管理中心</h3><div class"con"> <p><a href"categorymanager.aspx">类别管理</a></p> /*我是这段代码出现问题*/ <p><a …

异步编程,到底有什么用?

关键词&#xff1a;高性能、架构设计、异步思想、场景落地 文章导读 场景切入 先来看一个日常生活快递寄件场景&#xff0c;从寄件人&#xff08;寄件&#xff09;到收件人&#xff08;收件&#xff09;&#xff0c;全流程如下 当你准备寄送一个包裹时&#xff0c;通常你可以…

Android配置GitLab CI/CD持续集成,Shell版本的gitlab-runner,FastLane执行,上传蒲公英

mac环境下, 首选需要安装gitlab-runner和fastlane brew install gitlab-runner brew install fastlane 安装完成,来到我们在gitlab下新建的Android项目,我们开始创建gitlab-runner 1、创建runner 点开runner,点击新建runner 选择macos,自定义一个标签,把运行未打标签…

合约短线高胜率策略-扭转乾坤指标使用说明

扭转乾坤指标使用说明 行情判断 双绿线 多趋势双红线 空趋势大绿线 小红线 多震荡大红线 小绿线 空震荡 进场条件 趋势行情进场 多趋势 多信号 底金叉 做多空趋势 空信号 顶死叉 做空 震荡行情进场 多震荡 多信号 底金叉 做多多震荡 空信号 顶死叉 做空空…

Elasticsearch:将文档级安全性 (DLS) 添加到你的内部知识搜索

作者&#xff1a;来自 Elastic Sean Story 你的企业很可能淹没在内部数据中。 你拥有问题跟踪、笔记记录、会议记录、维基页面、视频录制、聊天以及即时消息和私信。 并且不要忘记电子邮件&#xff01; 难怪如此多的企业都在尝试创造工作场所搜索体验 - 为员工提供集中、一站…

RPC教程 7.服务发现与注册中心

0.前言 这一节的内容只能解决只有一个服务的情况。要是有多个服务(即是多个结构体&#xff09;这种就解决不了&#xff0c;也即是没有服务ip地址和服务实例的映射关系。 1.为什么需要注册中心 在上一节中&#xff0c;客户端想要找到服务实例的ip,需要硬编码把ip写到代码中。…

python+selenium的web自动化】- 元素的常用操作详解(一)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

PySimpleGUI 综合应用|英语文本朗读以及转换为语音Mp3

PySimpleGUI 综合应用 目录 PySimpleGUI 综合应用 应用界面 完整代码 所需模块 PySimpleGUI pyttsx3 pyaudio rapidfuzz 字典格式 应用界面 完整代码 英语朗读器.pyw import PySimpleGUI as sg import pyttsx3,pyaudio,pyperclip import os,re,datetime,wave,threa…